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