httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ma...@hyperreal.org
Subject cvs commit: apache-apr/pthreads/src/main http_accept.c
Date Thu, 20 May 1999 05:00:42 GMT
manoj       99/05/19 22:00:42

  Modified:    pthreads/src/main http_accept.c
  Log:
  Another cleanup. Get rid of an if (1) that was left around to make a
  different patch look small.
  
  Revision  Changes    Path
  1.14      +49 -60    apache-apr/pthreads/src/main/http_accept.c
  
  Index: http_accept.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/pthreads/src/main/http_accept.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -u -r1.13 -r1.14
  --- http_accept.c	1999/05/20 04:48:39	1.13
  +++ http_accept.c	1999/05/20 05:00:41	1.14
  @@ -399,72 +399,61 @@
               if (workers_may_exit)
                   break;
   
  -            /* XXX - Yes, we always go through the poll, at least for now.
  -             *       - mvsk
  -             */
  -            if (1) {
  -                /* more than one socket */
  -                srv = poll(listenfds, num_listenfds + 1, -1);
  -                if (workers_may_exit)
  -                    break;
  -                if (srv < 0) {
  -                    /* XXX - hmmmm, poll can return EINTR. - mvsk */
  -                    if (errno == EINTR) {
  -                        continue;
  -                    }
  -                    SAFE_ACCEPT(accept_mutex_off(0));
  -                    SAFE_ACCEPT(intra_mutex_off(0));
  -                    /* Single Unix documents select as returning errnos
  -                     * EBADF, EINTR, and EINVAL... and in none of those
  -                     * cases does it make sense to continue.  In fact
  -                     * on Linux 2.0.x we seem to end up with EFAULT
  -                     * occasionally, and we'd loop forever due to it.
  -                     */
  -                    ap_log_error(APLOG_MARK, APLOG_ERR, (const server_rec*) ap_get_server_conf(),
"select: (listen)");
  -                    clean_child_exit(1);
  -                }
  -                
  -                if (srv == 0) {
  -                    /* Is srv == 0 a valid return? */
  +            srv = poll(listenfds, num_listenfds + 1, -1);
  +            if (workers_may_exit)
  +                break;
  +            if (srv < 0) {
  +                /* XXX - hmmmm, poll can return EINTR. - mvsk */
  +                if (errno == EINTR) {
                       continue;
  +                }
  +                SAFE_ACCEPT(accept_mutex_off(0));
  +                SAFE_ACCEPT(intra_mutex_off(0));
  +                /* Single Unix documents select as returning errnos
  +                 * EBADF, EINTR, and EINVAL... and in none of those
  +                 * cases does it make sense to continue.  In fact
  +                 * on Linux 2.0.x we seem to end up with EFAULT
  +                 * occasionally, and we'd loop forever due to it.
  +                 */
  +                ap_log_error(APLOG_MARK, APLOG_ERR, (const server_rec*) ap_get_server_conf(),
"select: (listen)");
  +                clean_child_exit(1);
  +            }
  +            
  +            if (srv == 0) {
  +                /* Is srv == 0 a valid return? */
  +                continue;
   		}
   
  -                /* find a listener */
  -                /* Loop or NULL terminated list? That is the question. Be consistent across
  -                   all the accept techniques */
  -                lr = head_listener;
  -                do {
  -                    /* XXX: should we check for PR_POLL_ERR ?? */
  -                    if (listenfds[lr->index].revents & POLLIN) {
  -                        /* advance to the next listener for next loop */
  -                        head_listener = lr->next;
  -                        /* hack to handle listenfds being NULL terminated list 
  -                         * rather than a loop 
  -                         */
  -                        if (!head_listener) {
  -                            head_listener = ap_listeners;
  -                        }
  -                        goto got_lr;
  +            /* find a listener */
  +            /* Loop or NULL terminated list? That is the question. Be consistent across
  +               all the accept techniques */
  +            lr = head_listener;
  +            do {
  +                /* XXX: should we check for PR_POLL_ERR ?? */
  +                if (listenfds[lr->index].revents & POLLIN) {
  +                    /* advance to the next listener for next loop */
  +                    head_listener = lr->next;
  +                    /* hack to handle listenfds being NULL terminated list 
  +                     * rather than a loop 
  +                     */
  +                    if (!head_listener) {
  +                        head_listener = ap_listeners;
                       }
  -                    lr = lr->next;
  -		    if (lr == NULL) {
  +                    goto got_lr;
  +                }
  +                lr = lr->next;
  +		if (lr == NULL) {
   			lr = ap_listeners;
  -                    }
  -                } while (lr != head_listener);
  -                
  -                /* if we don't find anything then just start again */
  -		fprintf(stderr,"poll returned but we got nothing!\n");	
  -		head_listener = ap_listeners;	
  -                continue;
  -
  -            got_lr:
  -                sd = lr->fd;
  -            }
  -            else {
  -                /* only one socket, just pretend we did the other stuff */
  -                sd = ap_listeners->fd;
  -            }
  +                }
  +            } while (lr != head_listener);
               
  +            /* if we don't find anything then just start again */
  +	    fprintf(stderr,"poll returned but we got nothing!\n");	
  +	    head_listener = ap_listeners;	
  +            continue;
  +
  +        got_lr:
  +            sd = lr->fd;
               csd = accept(sd, sa_client, &len);   
               requests_this_child--;
   
  
  
  

Mime
View raw message