From: Nick Kew Date: Sat, 23 Feb 2008 00:34:47 +0000 (+0000) Subject: Backport r628644 X-Git-Tag: 2.2.9~352 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e41dbfad6f34351a13c0f0836a6aeae53efbf01;p=thirdparty%2Fapache%2Fhttpd.git Backport r628644 http_filters: Don't returm 100-continue on client error PR 43711 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@630366 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 7ec128ec48e..907ba02ec01 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.2.9 + *) http_filters: Don't returm 100-continue on client error + PR 43711 [Chetan Reddy ] + *) mod_charset_lite: Add TranslateAllMimeTypes sub-option to CharsetOptions, allowing the administrator to skip the mimetype checking that precedes translation. diff --git a/STATUS b/STATUS index 3056daa7a96..5e529aec829 100644 --- a/STATUS +++ b/STATUS @@ -81,14 +81,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * http_filters: Don't return 100-continue on client error - PR 43711 - Trunk version of patch: - http://svn.apache.org/viewvc?view=rev&revision=628644 - Backport version for 2.2.x of patch: - Trunk version works (minus CHANGES conflict) - +1: jim, rpluem, niq - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c index 7ad07ad62fc..9ab3e5d66c7 100644 --- a/modules/http/http_filters.c +++ b/modules/http/http_filters.c @@ -323,18 +323,23 @@ apr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b, (ctx->state == BODY_LENGTH && ctx->remaining > 0)) && f->r->expecting_100 && f->r->proto_num >= HTTP_VERSION(1,1) && !(f->r->eos_sent || f->r->bytes_sent)) { - char *tmp; + if (ap_is_HTTP_CLIENT_ERROR(f->r->status)) { + ctx->state = BODY_NONE; + ctx->eos_sent = 1; + } else { + char *tmp; - tmp = apr_pstrcat(f->r->pool, AP_SERVER_PROTOCOL, " ", - ap_get_status_line(100), CRLF CRLF, NULL); - apr_brigade_cleanup(bb); - e = apr_bucket_pool_create(tmp, strlen(tmp), f->r->pool, - f->c->bucket_alloc); - APR_BRIGADE_INSERT_HEAD(bb, e); - e = apr_bucket_flush_create(f->c->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(bb, e); + tmp = apr_pstrcat(f->r->pool, AP_SERVER_PROTOCOL, " ", + ap_get_status_line(100), CRLF CRLF, NULL); + apr_brigade_cleanup(bb); + e = apr_bucket_pool_create(tmp, strlen(tmp), f->r->pool, + f->c->bucket_alloc); + APR_BRIGADE_INSERT_HEAD(bb, e); + e = apr_bucket_flush_create(f->c->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(bb, e); - ap_pass_brigade(f->c->output_filters, bb); + ap_pass_brigade(f->c->output_filters, bb); + } } /* We can't read the chunk until after sending 100 if required. */