| [1505] | 1 | --- httpd-2.2.x/server/protocol.c       2010/03/02 04:00:01     917866 | 
|---|
|  | 2 | +++ httpd-2.2.x/server/protocol.c       2010/03/02 04:01:29     917867 | 
|---|
|  | 3 | @@ -1041,15 +1041,13 @@ | 
|---|
|  | 4 | return r; | 
|---|
|  | 5 | } | 
|---|
|  | 6 |  | 
|---|
|  | 7 | -/* if a request with a body creates a subrequest, clone the original request's | 
|---|
|  | 8 | - * input headers minus any headers pertaining to the body which has already | 
|---|
|  | 9 | - * been read.  out-of-line helper function for ap_set_sub_req_protocol. | 
|---|
|  | 10 | +/* if a request with a body creates a subrequest, remove original request's | 
|---|
|  | 11 | + * input headers which pertain to the body which has already been read. | 
|---|
|  | 12 | + * out-of-line helper function for ap_set_sub_req_protocol. | 
|---|
|  | 13 | */ | 
|---|
|  | 14 |  | 
|---|
|  | 15 | -static void clone_headers_no_body(request_rec *rnew, | 
|---|
|  | 16 | -                                  const request_rec *r) | 
|---|
|  | 17 | +static void strip_headers_request_body(request_rec *rnew) | 
|---|
|  | 18 | { | 
|---|
|  | 19 | -    rnew->headers_in = apr_table_copy(rnew->pool, r->headers_in); | 
|---|
|  | 20 | apr_table_unset(rnew->headers_in, "Content-Encoding"); | 
|---|
|  | 21 | apr_table_unset(rnew->headers_in, "Content-Language"); | 
|---|
|  | 22 | apr_table_unset(rnew->headers_in, "Content-Length"); | 
|---|
|  | 23 | @@ -1083,15 +1081,14 @@ | 
|---|
|  | 24 |  | 
|---|
|  | 25 | rnew->status          = HTTP_OK; | 
|---|
|  | 26 |  | 
|---|
|  | 27 | +    rnew->headers_in = apr_table_copy(rnew->pool, r->headers_in); | 
|---|
|  | 28 | + | 
|---|
|  | 29 | /* did the original request have a body?  (e.g. POST w/SSI tags) | 
|---|
|  | 30 | * if so, make sure the subrequest doesn't inherit body headers | 
|---|
|  | 31 | */ | 
|---|
|  | 32 | if (apr_table_get(r->headers_in, "Content-Length") | 
|---|
|  | 33 | || apr_table_get(r->headers_in, "Transfer-Encoding")) { | 
|---|
|  | 34 | -        clone_headers_no_body(rnew, r); | 
|---|
|  | 35 | -    } else { | 
|---|
|  | 36 | -        /* no body (common case).  clone headers the cheap way */ | 
|---|
|  | 37 | -        rnew->headers_in      = r->headers_in; | 
|---|
|  | 38 | +        strip_headers_request_body(rnew); | 
|---|
|  | 39 | } | 
|---|
|  | 40 | rnew->subprocess_env  = apr_table_copy(rnew->pool, r->subprocess_env); | 
|---|
|  | 41 | rnew->headers_out     = apr_table_make(rnew->pool, 5); | 
|---|