> Am 29.01.2016 um 13:55 schrieb Ruediger Pluem <[email protected]>: > > > > On 01/27/2016 04:38 PM, Ruediger Pluem wrote: >> >> >> On 01/27/2016 03:51 PM, [email protected] wrote: >>> Author: icing >>> Date: Wed Jan 27 14:51:53 2016 >>> New Revision: 1727071 >>> >>> URL: http://svn.apache.org/viewvc?rev=1727071&view=rev >>> Log: >>> new hook pre_close_connection >>> >>> Modified: >>> httpd/httpd/trunk/CHANGES >>> httpd/httpd/trunk/include/http_connection.h >>> httpd/httpd/trunk/server/connection.c >>> httpd/httpd/trunk/server/mpm/event/event.c >>> >> >> >>> Modified: httpd/httpd/trunk/server/connection.c >>> URL: >>> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/connection.c?rev=1727071&r1=1727070&r2=1727071&view=diff >>> ============================================================================== >>> --- httpd/httpd/trunk/server/connection.c (original) >>> +++ httpd/httpd/trunk/server/connection.c Wed Jan 27 14:51:53 2016 >> >>> @@ -92,6 +95,17 @@ AP_CORE_DECLARE(void) ap_flush_conn(conn >>> (void)ap_shutdown_conn(c, 1); >>> } >>> >>> +AP_DECLARE(int) ap_prep_lingering_close(conn_rec *c) >>> +{ >>> + /* Give protocol handlers one last chance to raise their voice */ >>> + ap_run_pre_close_connection(c); >>> + >>> + if (c->sbh) { >>> + ap_update_child_status(c->sbh, SERVER_CLOSING, NULL); >>> + } >>> + return 0; >>> +} >>> + >>> /* we now proceed to read from the client until we get EOF, or until >>> * MAX_SECS_TO_LINGER has passed. The reasons for doing this are >>> * documented in a draft: >>> @@ -112,10 +126,10 @@ AP_DECLARE(int) ap_start_lingering_close >>> return 1; >>> } >>> >>> - if (c->sbh) { >>> - ap_update_child_status(c->sbh, SERVER_CLOSING, NULL); >>> + if (!ap_prep_lingering_close(c)) { >> >> This is always true. So effectively we disable the code below. >> >>> + return 1; >>> } >>> - >>> + >>> /* Close the connection, being careful to send out whatever is still >>> * in our buffers. If possible, try to avoid a hard close until the >>> * client has ACKed our FIN and/or has stopped sending us data. >>> > > And in effect this now causes the following failures in the test suite: > > t/apache/chunkinput.t (Wstat: 13 Tests: 22 Failed: 0) > Non-zero wait status: 13 > Parse errors: Bad plan. You planned 37 tests but ran 22. > t/apache/pr35292.t (Wstat: 0 Tests: 3 Failed: 1) > Failed test: 2 > t/ssl/headers.t (Wstat: 0 Tests: 3 Failed: 3) > Failed tests: 1-3
Fixed in r1727573. Did not see the chunkinput failures, but the other ones on OS X. -Stefan
