]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Backport r628644
authorNick Kew <niq@apache.org>
Sat, 23 Feb 2008 00:34:47 +0000 (00:34 +0000)
committerNick Kew <niq@apache.org>
Sat, 23 Feb 2008 00:34:47 +0000 (00:34 +0000)
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

CHANGES
STATUS
modules/http/http_filters.c

diff --git a/CHANGES b/CHANGES
index 7ec128ec48ebe0ed78255b93b28f5d6b110ba9be..907ba02ec01402006e4e59279ca935497f42d75b 100644 (file)
--- 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 <chetanreddy gmail.com>]
+
   *) 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 3056daa7a96bbbde1b75d0e84e666d6a16df7901..5e529aec8298aa5bd8e7784eb4944c9b01ac5421 100644 (file)
--- 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 ]
 
index 7ad07ad62fc3de8f8a85c0c3578eaaf44851b90d..9ab3e5d66c79145281c306f37117381a505281f2 100644 (file)
@@ -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. */