httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruediger Pluem <rpl...@apache.org>
Subject Re: svn commit: r561352 - /httpd/httpd/trunk/modules/http/http_protocol.c
Date Sat, 04 Aug 2007 11:58:19 GMT


On 07/31/2007 08:52 PM, Ruediger Pluem wrote:
> 
> On 07/31/2007 04:54 PM,  wrote:
>> Author: gregames
>> Date: Tue Jul 31 07:54:46 2007
>> New Revision: 561352
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=561352
>> Log:
>> this appears to be a "mv" rather than a "swap", so we should be able to
>> simplify & shave off a couple of cycles. 
>>
>> Modified:
>>     httpd/httpd/trunk/modules/http/http_protocol.c
>>
>> Modified: httpd/httpd/trunk/modules/http/http_protocol.c
>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_protocol.c?view=diff&rev=561352&r1=561351&r2=561352
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/http/http_protocol.c (original)
>> +++ httpd/httpd/trunk/modules/http/http_protocol.c Tue Jul 31 07:54:46 2007
>> @@ -1138,7 +1138,6 @@
>>      }
>>  
>>      if (!r->assbackwards) {
>> -        apr_table_t *tmp = r->headers_out;
>>  
>>          /* For all HTTP/1.x responses for which we generate the message,
>>           * we need to avoid inheriting the "normal status" header fields
>> @@ -1146,7 +1145,6 @@
>>           * error or redirect, except for Location on external redirects.
>>           */
>>          r->headers_out = r->err_headers_out;
>> -        r->err_headers_out = tmp;
>>          apr_table_clear(r->err_headers_out);
>>  
>>          if (ap_is_HTTP_REDIRECT(status) || (status == HTTP_CREATED)) {
>>
> 
> IMHO this is wrong. Lets take the following example:
> 
> r->headers_out points to a table T1 containing the key value pairs ((A1,a1), (B1,b1)).
> r->err_headers_out points to a table T2 containing the key value pairs ((A2,a2), (B2,b2)).
> 
> After running thru the old code (until after the apr_table_clear) the the result is:
> 
> r->headers_out points to table T2 containing the key value pairs  ((A2,a2), (B2,b2)).
> r->err_headers_out points to table T1 which is empty.
> 
> Using the new code the result is
> 
> r->headers_out points to table T2.
> r->err_headers_out points to table T2.
> 
> T2 is empty.
> 
> So r->headers_out and r->err_headers_out point to the *same* table and this table
is *empty*.
> So we loose *all* output headers for further processing.

Ping? Any comments?

Regards

RĂ¼diger


Mime
View raw message