From: Jeff Trawick Date: Mon, 1 Oct 2012 14:20:37 +0000 (+0000) Subject: core: ErrorDocument now works for requests without a Host header. X-Git-Tag: 2.5.0-alpha~6250 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9840fde938f06e014813a0dbed43c7935069da79;p=apache core: ErrorDocument now works for requests without a Host header. PR: 48357 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1392347 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index ddbf6f9f94..db99d9347f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) core: ErrorDocument now works for requests without a Host header. + PR 48357. [Jeff Trawick] + *) --with-module: Fix failure to integrate them into some existing module directories. PR 40097. [Jeff Trawick] diff --git a/server/protocol.c b/server/protocol.c index 30b3cd5eef..b0da156eec 100644 --- a/server/protocol.c +++ b/server/protocol.c @@ -918,7 +918,7 @@ request_rec *ap_read_request(conn_rec *conn) request_rec *r; apr_pool_t *p; const char *expect; - int access_status; + int access_status = HTTP_OK; apr_bucket_brigade *tmp_bb; apr_socket_t *csd; apr_interval_time_t cur_timeout; @@ -1086,7 +1086,7 @@ request_rec *ap_read_request(conn_rec *conn) * HTTP/1.1 mentions twice (S9, S14.23) that a request MUST contain * a Host: header, and the server MUST respond with 400 if it doesn't. */ - r->status = HTTP_BAD_REQUEST; + access_status = HTTP_BAD_REQUEST; ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(00569) "client sent HTTP/1.1 request without hostname " "(see RFC2616 section 14.23): %s", r->uri); @@ -1102,14 +1102,8 @@ request_rec *ap_read_request(conn_rec *conn) ap_add_input_filter_handle(ap_http_input_filter_handle, NULL, r, r->connection); - if (r->status != HTTP_OK) { - ap_send_error_response(r, 0); - ap_update_child_status(conn->sbh, SERVER_BUSY_LOG, r); - ap_run_log_transaction(r); - goto traceout; - } - - if ((access_status = ap_run_post_read_request(r))) { + if (access_status != HTTP_OK + || (access_status = ap_run_post_read_request(r))) { ap_die(access_status, r); ap_update_child_status(conn->sbh, SERVER_BUSY_LOG, r); ap_run_log_transaction(r);