You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by je...@apache.org on 2005/03/14 23:23:00 UTC

svn commit: r157478 - in httpd/httpd/trunk: CHANGES modules/proxy/mod_proxy_http.c

Author: jerenkrantz
Date: Mon Mar 14 14:22:58 2005
New Revision: 157478

URL: http://svn.apache.org/viewcvs?view=rev&rev=157478
Log:
mod_proxy: Add proxy-sendextracrlf option to send an extra CRLF at the
end of the request body to work with really old HTTP servers.

* modules/proxy/mod_proxy_http.c
  (stream_reqbody_cl, spool_reqbody_cl): If proxy-sendextracrlf option is
  present, append a CRLF to the body stream that isn't counted against CL.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/proxy/mod_proxy_http.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/CHANGES?view=diff&r1=157477&r2=157478
==============================================================================
--- httpd/httpd/trunk/CHANGES (original)
+++ httpd/httpd/trunk/CHANGES Mon Mar 14 14:22:58 2005
@@ -2,6 +2,10 @@
 
   [Remove entries to the current 2.0 section below, when backported]
 
+  *) mod_proxy: Add proxy-sendextracrlf option to send an extra CRLF at the
+     end of the request body to work with really old HTTP servers.
+     [Justin Erenkrantz]
+
   *) util_ldap: Keep track of the number of attributes retrieved from 
      LDAP so that all the values can be properly cached even if the 
      value is NULL. PR 33901 [Brad Nicholes]

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/modules/proxy/mod_proxy_http.c?view=diff&r1=157477&r2=157478
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_http.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_http.c Mon Mar 14 14:22:58 2005
@@ -373,6 +373,12 @@
         /* need to flush any pending data */
         b = input_brigade; /* empty now; pass_brigade() will add flush */
     }
+    if (apr_table_get(r->subprocess_env, "proxy-sendextracrlf")) {
+        e = apr_bucket_immortal_create(ASCII_CRLF, 2,
+                                       r->connection->bucket_alloc);
+        APR_BRIGADE_INSERT_TAIL(input_brigade, e);
+    }
+
     status = pass_brigade(bucket_alloc, r, conn, origin, b, 1);
     return status;
 }
@@ -508,6 +514,11 @@
             e = apr_bucket_file_create(tmpfile, 0, (apr_size_t)fsize, p,
                                        bucket_alloc);
         }
+        APR_BRIGADE_INSERT_TAIL(header_brigade, e);
+    }
+    if (apr_table_get(r->subprocess_env, "proxy-sendextracrlf")) {
+        e = apr_bucket_immortal_create(ASCII_CRLF, 2,
+                                       r->connection->bucket_alloc);
         APR_BRIGADE_INSERT_TAIL(header_brigade, e);
     }
     status = pass_brigade(bucket_alloc, r, conn, origin, header_brigade, 1);