mirror of
https://github.com/apache/httpd.git
synced 2025-08-13 14:40:20 +00:00
core: Treat timeout reading request as 408 error, not 400.
Log 408 errors in access log as was done in Apache 1.3.x. PR: 39785 Submitted by: Nobutaka Mantani, Stefan Fritsch Reviewed and added to by: Dan Poirier git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@820760 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@ -606,6 +606,9 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb)
|
||||
r->proto_num = HTTP_VERSION(1,0);
|
||||
r->protocol = apr_pstrdup(r->pool, "HTTP/1.0");
|
||||
}
|
||||
else if (rv == APR_TIMEUP) {
|
||||
r->status = HTTP_REQUEST_TIME_OUT;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} while ((len <= 0) && (++num_blank_lines < max_blank_lines));
|
||||
@ -689,7 +692,12 @@ AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r, apr_bucket_brigade *bb
|
||||
&len, r, 0, bb);
|
||||
|
||||
if (rv != APR_SUCCESS) {
|
||||
r->status = HTTP_BAD_REQUEST;
|
||||
if (rv == APR_TIMEUP) {
|
||||
r->status = HTTP_REQUEST_TIME_OUT;
|
||||
}
|
||||
else {
|
||||
r->status = HTTP_BAD_REQUEST;
|
||||
}
|
||||
|
||||
/* ap_rgetline returns APR_ENOSPC if it fills up the buffer before
|
||||
* finding the end-of-line. This is only going to happen if it
|
||||
@ -877,7 +885,7 @@ request_rec *ap_read_request(conn_rec *conn)
|
||||
r->read_length = 0;
|
||||
r->read_body = REQUEST_NO_BODY;
|
||||
|
||||
r->status = HTTP_REQUEST_TIME_OUT; /* Until we get a request */
|
||||
r->status = HTTP_OK; /* Until further notice */
|
||||
r->the_request = NULL;
|
||||
|
||||
/* Begin by presuming any module can make its own path_info assumptions,
|
||||
@ -898,6 +906,12 @@ request_rec *ap_read_request(conn_rec *conn)
|
||||
apr_brigade_destroy(tmp_bb);
|
||||
goto traceout;
|
||||
}
|
||||
else if (r->status == HTTP_REQUEST_TIME_OUT) {
|
||||
ap_update_child_status(conn->sbh, SERVER_BUSY_LOG, r);
|
||||
ap_run_log_transaction(r);
|
||||
apr_brigade_destroy(tmp_bb);
|
||||
goto traceout;
|
||||
}
|
||||
|
||||
apr_brigade_destroy(tmp_bb);
|
||||
r = NULL;
|
||||
@ -917,7 +931,7 @@ request_rec *ap_read_request(conn_rec *conn)
|
||||
|
||||
if (!r->assbackwards) {
|
||||
ap_get_mime_headers_core(r, tmp_bb);
|
||||
if (r->status != HTTP_REQUEST_TIME_OUT) {
|
||||
if (r->status != HTTP_OK) {
|
||||
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
|
||||
"request failed: error reading the headers");
|
||||
ap_send_error_response(r, 0);
|
||||
@ -958,8 +972,6 @@ request_rec *ap_read_request(conn_rec *conn)
|
||||
|
||||
apr_brigade_destroy(tmp_bb);
|
||||
|
||||
r->status = HTTP_OK; /* Until further notice. */
|
||||
|
||||
/* update what we think the virtual host is based on the headers we've
|
||||
* now read. may update status.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user