httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Plüm, Rüdiger, Vodafone Group <ruediger.pl...@vodafone.com>
Subject RE: svn commit: r1484852 - in /httpd/httpd/trunk: CHANGES modules/http/http_filters.c
Date Wed, 22 May 2013 13:57:01 GMT
I guess you missed a special case:

If the reverse proxy backend sends a response without a Content-Length header and without
a Transfer-Encoding,
which is IMHO valid for HTTP 1.0 responses if the connection is closed after the response.
The following patch would fix this:

Index: modules/http/http_filters.c
===================================================================
--- modules/http/http_filters.c (revision 1485192)
+++ modules/http/http_filters.c (working copy)
@@ -394,8 +394,15 @@
         case BODY_LENGTH:
         case BODY_CHUNK_DATA: {

-            /* Ensure that the caller can not go over our boundary point. */
-            if (ctx->remaining < readbytes) {
+            /*
+             * Ensure that the caller can not go over our boundary point,
+             * BUT only if this is not a response by reverse proxy backend
+             * that sent no Content-Length header and has no transfer encoding
+             * which is valid for a non keep-alive HTTP 1.0 response.
+             */
+            if ((ctx->remaining < readbytes) && !((ctx->remaining == 0)
&&
+                  (ctx->state == BODY_NONE) &&
+                  (f->r->proxyreq == PROXYREQ_RESPONSE))) {
                 readbytes = ctx->remaining;
             }
             if (readbytes > 0) {

Should I commit it?

Regards

Rüdiger

Mime
View raw message