On 21.01.2010 08:20, wr...@apache.org wrote:
> Author: wrowe
> Date: Thu Jan 21 07:19:41 2010
> New Revision: 901578
> 
> URL: http://svn.apache.org/viewvc?rev=901578&view=rev
> Log:
> Correctly align the behavior of headers_in to be consistent with the
> treatment of headers_out, resolving PR 48359 by keeping subrequest
> scope changes out of the main request headers.  This ensures that all
> requests-without-bodies behave as the requests-with-bodies code has.
> 
> Modified:
>     httpd/httpd/trunk/CHANGES
>     httpd/httpd/trunk/modules/http/http_request.c
>     httpd/httpd/trunk/modules/metadata/mod_headers.c
>     httpd/httpd/trunk/server/protocol.c
> 
> Modified: httpd/httpd/trunk/modules/http/http_request.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_request.c?rev=901578&r1=901577&r2=901578&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/http/http_request.c (original)
> +++ httpd/httpd/trunk/modules/http/http_request.c Thu Jan 21 07:19:41 2010
> @@ -442,7 +442,7 @@
>      new->request_time    = r->request_time;
>      new->main            = r->main;
>  
> -    new->headers_in      = r->headers_in;
> +    new->headers_in      = apr_table_copy(r->pool, r->headers_in);
>      new->headers_out     = apr_table_make(r->pool, 12);
>      new->err_headers_out = r->err_headers_out;
>      new->subprocess_env  = rename_original_env(r->pool, r->subprocess_env);
> @@ -515,6 +515,8 @@
>      r->per_dir_config = rr->per_dir_config;
>      /* copy output headers from subrequest, but leave negotiation headers */
>      r->notes = apr_table_overlay(r->pool, rr->notes, r->notes);
> +    r->headers_in = apr_table_overlay(r->pool, rr->headers_in,
> +                                      r->headers_in);

I think this is wrong. Think of the case where the subrequest does not change
anything on headers_in. In this case the contents of headers_in of the request
and the subrequest are the same (the subrequest has a copy of the requests
table). Doing an apr_table_overlay would result in a table that has all key
value pairs of the original headers_in doubled.

Regards

RĂ¼diger

Reply via email to