Jeff Trawick wrote:
On 1 Oct 2004 16:03:09 -0000, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

jfclere     2004/10/01 09:03:09

 Modified:    os       config.m4
              os/unix  os.h unixd.c
 Log:
 Move the few BS2000 specific in unixd.c


 Index: unixd.c
 ===================================================================
 RCS file: /home/cvs/httpd-2.0/os/unix/unixd.c,v
 retrieving revision 1.69
 retrieving revision 1.70
 diff -u -r1.69 -r1.70
 --- unixd.c   24 Apr 2004 19:42:52 -0000      1.69
 +++ unixd.c   1 Oct 2004 16:03:08 -0000       1.70
 @@ -457,11 +457,26 @@
  {
      apr_socket_t *csd;
      apr_status_t status;
 +#ifdef _OSD_POSIX
 +    int sockdes;
 +#endif

      *accepted = NULL;
      status = apr_socket_accept(&csd, lr->sd, ptrans);
      if (status == APR_SUCCESS) {
          *accepted = csd;
 +#ifdef _OSD_POSIX
 +        apr_os_sock_get(&sockdes, csd);
 +        if (sockdes >= FD_SETSIZE) {
 +            ap_log_error(APLOG_MARK, APLOG_WARNING, 0, NULL,
 +                         "new file descriptor %d is too large; you probably need "
 +                         "to rebuild Apache with a larger FD_SETSIZE "
 +                         "(currently %d)",
 +                         sockdes, FD_SETSIZE);
 +            apr_socket_close(csd);
 +            return APR_EINTR;
 +        }
 +#endif


the old logic was removed on purpose

an analogous check is in APR at the point where select() is actually
needed; an error will be returned from the apr poll call or the apr
send/recv call

the APR check covers not just sockets but also pipes used to
communicate with CGIs

it would be nice if there was a special APR error code to use there
with a unique error message though

(btw, it is APR that would need to be rebuilt)



In poll/unix/poll.c: +++ if (fd >= FD_SETSIZE) { /* XXX invent new error code so application has a clue */ return APR_EBADF; } +++

Reply via email to