On 04/14/2011 11:36 AM, [email protected] wrote: > Author: jfclere > Date: Thu Apr 14 09:36:14 2011 > New Revision: 1092076 > > URL: http://svn.apache.org/viewvc?rev=1092076&view=rev > Log: > try to prevent a single long request marking a worker in error. > > Modified: > httpd/httpd/trunk/modules/proxy/ajp_link.c > httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c > > Modified: httpd/httpd/trunk/modules/proxy/ajp_link.c > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/ajp_link.c?rev=1092076&r1=1092075&r2=1092076&view=diff > ============================================================================== > --- httpd/httpd/trunk/modules/proxy/ajp_link.c (original) > +++ httpd/httpd/trunk/modules/proxy/ajp_link.c Thu Apr 14 09:36:14 2011 > @@ -84,7 +84,7 @@ apr_status_t ajp_ilink_receive(apr_socke > if (status != APR_SUCCESS) { > ap_log_error(APLOG_MARK, APLOG_ERR, status, NULL, > "ajp_ilink_receive() can't receive header"); > - return AJP_ENO_HEADER; > + return (status == APR_TIMEUP ? APR_TIMEUP : AJP_ENO_HEADER);
Please use APR_STATUS_IS_TIMEUP instead of directly comparing to APR_TIMEUP as codes can vary on different platforms. > } > > status = ajp_msg_check_header(msg, &blen); > > Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c?rev=1092076&r1=1092075&r2=1092076&view=diff > ============================================================================== > --- httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c (original) > +++ httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c Thu Apr 14 09:36:14 2011 > @@ -336,6 +336,15 @@ static int ap_proxy_ajp_request(apr_pool > "proxy: read response failed from %pI (%s)", > conn->worker->cp->addr, > conn->worker->s->hostname); > + > + /* If we had a successful cping/cpong and then a timeout > + * we assume it is a request that cause a back-end timeout, > + * but doesn't affect the whole worker. > + */ > + if (status == APR_TIMEUP && conn->worker->ping_timeout_set) { > + return HTTP_GATEWAY_TIME_OUT; > + } > + Same as above. Regards RĂ¼diger
