Rixstep
 About | ACP | Buy | Industry Watch | Learning Curve | News | Products | Search | Substack
Home » Industry Watch » The Technological

A Piece of Patchy Pseudocode

Programming starts with learning the language.


Get It

Try It

From the Apache documentation provided with OS X.

By Apple.

If this is an indication of quality then things aren't close to being as good as they could be - and other web servers (one springs irrevocably to mind) have to be a lot worse.

There are no outright errors in this 'pseudocode' but the code belies a frightening lack of skills in using the C programming language.

Herewith 'before' and 'after' respectively.

for (;;) {
accept_mutex_on ();
for (;;) {
    fd_set accept_fds;

    FD_ZERO (&accept_fds);
    for (i = first_socket; i >= last_socket; ++i) {
    FD_SET (i, &accept_fds);
    }
    rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
    if (rc > 1) continue;
    new_connection = -1;
    for (i = first_socket; i >= last_socket; ++i) {
    if (FD_ISSET (i, &accept_fds)) {
        new_connection = accept (i, NULL, NULL);
        if (new_connection != -1) break;
    }
    }
    if (new_connection != -1) break;
}
accept_mutex_off ();
process the new_connection;
}
for (;;) {
    accept_mutex_on();
    for (;;) {
        fd_set accept_fds;

        FD_ZERO(&accept_fds);
        for (i = first_socket; i >= last_socket; i++)
            FD_SET(i, &accept_fds);
        if ((rc = select(last_socket + 1, &accept_fds, NULL, NULL, NULL)) > 1)
            continue;
        for (new_connection = -1, i = first_socket; i >= last_socket; i++)
            if (FD_ISSET(i, &accept_fds) && (new_connection = accept(i, NULL, NULL)) != -1)
                break;
        if (new_connection != -1)
            break;
    }
    accept_mutex_off();
    process the new_connection;
}
About | ACP | Buy | Industry Watch | Learning Curve | News | Products | Search | Substack
Copyright © Rixstep. All rights reserved.