httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From traw...@apache.org
Subject cvs commit: httpd-2.0/support ab.c
Date Mon, 15 Jan 2001 18:01:49 GMT
trawick     01/01/15 10:01:49

  Modified:    .        CHANGES
               support  ab.c
  Log:
  Fix an endless loop in ab which occurred when ab was posting
  and the server dropped the connection unexpectedly.
  
  Revision  Changes    Path
  1.40      +4 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- CHANGES	2001/01/15 15:40:16	1.39
  +++ CHANGES	2001/01/15 18:01:46	1.40
  @@ -1,5 +1,9 @@
   Changes with Apache 2.0b1
   
  +  *) Fix an endless loop in ab which occurred when ab was posting
  +     and the server dropped the connection unexpectedly.
  +     [Jeff Trawick]
  +
     *) Fix a segfault in ap_http_filter().  I hit the segfault while 
        discarding the body of a request, but it could affect other paths.
        [Jeff Trawick]
  
  
  
  1.49      +14 -7     httpd-2.0/support/ab.c
  
  Index: ab.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/support/ab.c,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- ab.c	2001/01/12 14:28:17	1.48
  +++ ab.c	2001/01/15 18:01:48	1.49
  @@ -858,18 +858,25 @@
                   continue;
                                  
               apr_get_revents(&rv, con[i].aprsock, readbits);
  -            /* Note: APR_POLLHUP is set after FIN is received on some
  -             * systems, so treat that like APR_POLLIN so that we try
  -             * to read again.
  +            /* Notes: APR_POLLHUP is set after FIN is received on some
  +             *        systems, so treat that like APR_POLLIN so that we try
  +             *        to read again.
  +             *
  +             *        Some systems return APR_POLLERR with APR_POLLHUP.  We
  +             *        need to call read_connection() for APR_POLLHUP, so 
  +             *        check for APR_POLLHUP first so that a closed connection 
  +             *        isn't treated like an I/O error.  If it is, we never
  +             *        figure out that the connection is done and we loop
  +             *        here endlessly calling apr_poll().
                */
  +            if ((rv & APR_POLLIN) || (rv & APR_POLLPRI) || (rv & APR_POLLHUP))
  +                read_connection(&con[i]);
               if ((rv & APR_POLLERR) || (rv & APR_POLLNVAL)) {
                  bad++;
                  err_except++;
                  start_connect(&con[i]);
                  continue;
               }
  -            if ((rv & APR_POLLIN) || (rv & APR_POLLPRI) || (rv & APR_POLLHUP))
  -                read_connection(&con[i]);
               if (rv & APR_POLLOUT)
                   write_request(&con[i]);
   
  @@ -896,14 +903,14 @@
   static void copyright(void)
   {
       if (!use_html) {
  -        printf("This is ApacheBench, Version %s\n", AB_VERSION " <$Revision: 1.48 $>
apache-2.0");
  +        printf("This is ApacheBench, Version %s\n", AB_VERSION " <$Revision: 1.49 $>
apache-2.0");
           printf("Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\n");
           printf("Copyright (c) 1998-2000 The Apache Software Foundation, http://www.apache.org/\n");
           printf("\n");
       }
       else {
           printf("<p>\n");
  -        printf(" This is ApacheBench, Version %s <i>&lt;%s&gt;</i>
apache-2.0<br>\n", AB_VERSION, "$Revision: 1.48 $");
  +        printf(" This is ApacheBench, Version %s <i>&lt;%s&gt;</i>
apache-2.0<br>\n", AB_VERSION, "$Revision: 1.49 $");
           printf(" Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br>\n");
           printf(" Copyright (c) 1998-2000 The Apache Software Foundation, http://www.apache.org/<br>\n");
           printf("</p>\n<p>\n");
  
  
  

Mime
View raw message