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 Regards RĂ¼diger
