From: Jeff Trawick Date: Mon, 10 Apr 2006 17:56:14 +0000 (+0000) Subject: Default handler: Don't return output filter apr_status_t values. X-Git-Tag: 2.2.2~53 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ee1c708c122b7118971f67fc2f887b6b3b78bb5b;p=thirdparty%2Fapache%2Fhttpd.git Default handler: Don't return output filter apr_status_t values. PR: 31759 Reviewed by: rpleum, jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@393002 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 5af4f648c21..608fbaeba9a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ -*- coding: utf-8 -*- Changes with Apache 2.2.2 + *) Default handler: Don't return output filter apr_status_t values. + PR 31759. [Jeff Trawick, Ruediger Pluem, Joe Orton] Changes with Apache 2.2.1 diff --git a/STATUS b/STATUS index e056f76adde..4ccddc0a030 100644 --- a/STATUS +++ b/STATUS @@ -91,14 +91,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: -1 bnicholes - The authorization refactoring that was done is for 2.3 and above. This can not be backported to 2.2. - * Default handler: Don't return output filter apr_status_t values. PR 31759. - Trunk version of patch: - http://svn.apache.org/viewcvs?rev=390922&view=rev - http://svn.apache.org/viewcvs?rev=391025&view=rev - 2.2.x version of patch: - Trunk version works - +1: rpluem, trawick, jim - * mod_proxy: Forward proxy requests created by mod_rewrite to the correct backend server. PR 39253. Trunk version of patch: diff --git a/server/core.c b/server/core.c index 8138d83f7ab..502bc34ca37 100644 --- a/server/core.c +++ b/server/core.c @@ -3698,7 +3698,19 @@ static int default_handler(request_rec *r) e = apr_bucket_eos_create(c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, e); - return ap_pass_brigade(r->output_filters, bb); + status = ap_pass_brigade(r->output_filters, bb); + if (status == APR_SUCCESS + || r->status != HTTP_OK + || c->aborted) { + return OK; + } + else { + /* no way to know what type of error occurred */ + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, status, r, + "default_handler: ap_pass_brigade returned %i", + status); + return HTTP_INTERNAL_SERVER_ERROR; + } } else { /* unusual method (not GET or POST) */ if (r->method_number == M_INVALID) {