From: Eric Covener Date: Wed, 23 Nov 2011 03:36:22 +0000 (+0000) Subject: mod_negotiation: don't return non-AP_FILTER_ERROR filter return values X-Git-Tag: 2.5.0-alpha~7828 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57b853536b2e9446d0f37995451b2203dae99c5e;p=thirdparty%2Fapache%2Fhttpd.git mod_negotiation: don't return non-AP_FILTER_ERROR filter return values to ap_run_handler() when sending a body directly from a type-map. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1205274 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/mappers/mod_negotiation.c b/modules/mappers/mod_negotiation.c index fc13bcdc786..f8668db593e 100644 --- a/modules/mappers/mod_negotiation.c +++ b/modules/mappers/mod_negotiation.c @@ -2972,6 +2972,7 @@ static int handle_map_file(request_rec *r) int res; char *udir; const char *new_req; + apr_status_t rv; if(strcmp(r->handler,MAP_FILE_MAGIC_TYPE) && strcmp(r->handler,"type-map")) return DECLINED; @@ -3050,7 +3051,16 @@ static int handle_map_file(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); + rv = ap_pass_brigade(r->output_filters, bb); + if (rv != APR_SUCCESS) { + if (rv != AP_FILTER_ERROR) { + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, rv, r, + "ap_pass_brigade returned %d", rv); + return HTTP_INTERNAL_SERVER_ERROR; + } + return AP_FILTER_ERROR; + } + return OK; } if (r->path_info && *r->path_info) {