On Thu, May 12, 2016 at 9:55 AM, William A Rowe Jr <[email protected]> wrote:
> On Sun, May 8, 2016 at 8:53 AM, <[email protected]> wrote: > >> Author: rjung >> Date: Sun May 8 13:53:37 2016 >> New Revision: 1742822 >> >> URL: http://svn.apache.org/viewvc?rev=1742822&view=rev >> Log: >> Fix yet another case where we clobber the >> server-status request info when a timeout happens. >> >> Modified: >> httpd/httpd/trunk/modules/http/http_core.c >> >> Modified: httpd/httpd/trunk/modules/http/http_core.c >> URL: >> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_core.c?rev=1742822&r1=1742821&r2=1742822&view=diff >> >> ============================================================================== >> --- httpd/httpd/trunk/modules/http/http_core.c (original) >> +++ httpd/httpd/trunk/modules/http/http_core.c Sun May 8 13:53:37 2016 >> @@ -148,7 +148,8 @@ static int ap_process_http_async_connect >> c->keepalive = AP_CONN_UNKNOWN; >> /* process the request if it was read without error */ >> >> - ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); >> + ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, >> + r->the_request ? r : NULL); >> if (r->status == HTTP_OK) { >> cs->state = CONN_STATE_HANDLER; >> ap_process_async_request(r); >> @@ -203,7 +204,8 @@ static int ap_process_http_sync_connecti >> c->keepalive = AP_CONN_UNKNOWN; >> /* process the request if it was read without error */ >> >> - ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); >> + ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, >> + r->the_request ? r : NULL); >> if (r->status == HTTP_OK) { >> if (cs) >> cs->state = CONN_STATE_HANDLER; >> > > I'd explained in another thread this week why this patch is invalid, > and I've gone ahead and reverted. > > We agreed there is a defect here, what about the attached fix? > Reposting, since gmail likes to base64 encode attached patches... --- modules/http/http_core.c (revision 1743511) +++ modules/http/http_core.c (working copy) @@ -148,9 +148,9 @@ c->keepalive = AP_CONN_UNKNOWN; /* process the request if it was read without error */ - ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); if (r->status == HTTP_OK) { cs->state = CONN_STATE_HANDLER; + ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); ap_process_async_request(r); /* After the call to ap_process_request, the * request pool may have been deleted. We set @@ -203,10 +203,10 @@ c->keepalive = AP_CONN_UNKNOWN; /* process the request if it was read without error */ - ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); if (r->status == HTTP_OK) { if (cs) cs->state = CONN_STATE_HANDLER; + ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); ap_process_request(r); /* After the call to ap_process_request, the * request pool will have been deleted. We set > > > >
