Index: support/ab.c
===================================================================
--- support/ab.c        (revision 1370289)
+++ support/ab.c        (working copy)
@@ -1347,11 +1347,21 @@
                 good++;
                 close_connection(c);
             }
+            else if (scode == SSL_ERROR_SYSCALL
+                     && status == 0
+                     && c->read != 0) {
+                /* connection closed, but in violation of the protocol, after
+                 * some data has already been read; this commonly happens, so
+                 * let the length check catch any response errors
+                 */
+                good++;
+                close_connection(c);
+            }
             else if (scode != SSL_ERROR_WANT_WRITE
                      && scode != SSL_ERROR_WANT_READ) {
                 /* some fatal error: */
                 c->read = 0;
-                BIO_printf(bio_err, "SSL read failed - closing connection\n");
+                BIO_printf(bio_err, "SSL read failed (%d) - closing
connection\n", scode);
                 ERR_print_errors(bio_err);
                 close_connection(c);
             }

Without it I get something like this:

...
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
SSL read failed - closing connection
Completed 200 requests
Finished 200 requests


Server Software:
Server Hostname:        127.0.0.1
Server Port:            8443

Document Path:          /manual/mod/mod_rewrite.html.en
Document Length:        0 bytes                                   <--------

The server is trunk mod_ssl using standard shutdown.

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Reply via email to