]> granicus.if.org Git - apache/blobdiff - modules/proxy/mod_proxy_http.c
Re-add "proxy-sendextracrlf" first introduced in r157478 and silently removed
[apache] / modules / proxy / mod_proxy_http.c
index a7538726f76e0dc480d433b28f95c31a2a255a8b..233903bef22ff27f06cbd0c76eae2155716db8d3 100644 (file)
@@ -309,6 +309,11 @@ static apr_status_t stream_reqbody_chunked(apr_pool_t *p,
                                    5, bucket_alloc);
     APR_BRIGADE_INSERT_TAIL(bb, e);
 
+    if (apr_table_get(r->subprocess_env, "proxy-sendextracrlf")) {
+        e = apr_bucket_immortal_create(ASCII_CRLF, 2, bucket_alloc);
+        APR_BRIGADE_INSERT_TAIL(bb, e);
+    }
+
     /* Now we have headers-only, or the chunk EOS mark; flush it */
     status = pass_brigade(bucket_alloc, r, p_conn, origin, bb, 1);
     return status;
@@ -352,6 +357,11 @@ static apr_status_t stream_reqbody_cl(apr_pool_t *p,
             /* We can't pass this EOS to the output_filters. */
             e = APR_BRIGADE_LAST(input_brigade);
             apr_bucket_delete(e);
+
+            if (apr_table_get(r->subprocess_env, "proxy-sendextracrlf")) {
+                e = apr_bucket_immortal_create(ASCII_CRLF, 2, bucket_alloc);
+                APR_BRIGADE_INSERT_TAIL(input_brigade, e);
+            }
         }
 
         /* C-L < bytes streamed?!?
@@ -547,6 +557,10 @@ static apr_status_t spool_reqbody_cl(apr_pool_t *p,
     if (tmpfile) {
         apr_brigade_insert_file(header_brigade, tmpfile, 0, fsize, p);
     }
+    if (apr_table_get(r->subprocess_env, "proxy-sendextracrlf")) {
+        e = apr_bucket_immortal_create(ASCII_CRLF, 2, bucket_alloc);
+        APR_BRIGADE_INSERT_TAIL(header_brigade, e);
+    }
     /* This is all a single brigade, pass with flush flagged */
     status = pass_brigade(bucket_alloc, r, p_conn, origin, header_brigade, 1);
     return status;