On 09.08.2011 15:37, Ben Noordhuis wrote:
> On Tue, Aug 9, 2011 at 15:20, Zaid Amireh <tum...@gmail.com> wrote:
>>
>> On Aug 8, 2011, at 3:56 PM, Ben Noordhuis wrote:
>>
>>> On Mon, Aug 8, 2011 at 10:29, Zaid Amireh <tum...@gmail.com> wrote:
>>>> I'm writing a module for Apache 2.2 that changes the content and thus 
>>>> needs to set a new C-L header, all is working perfectly for static files 
>>>> and content generated from content handlers (PHP & Ruby Passenger 
>>>> Phusion), an issue arose when testing with mod_proxy, it seems that any 
>>>> changes the module does to the HTTP headers are being ignored by mod_proxy.
>>>>
>>>> mod_proxy keeps serving the headers it first got from the backend source 
>>>> and disregards any changes my module does, is it possible to change the 
>>>> headers in this case?
>>>
>>> Yes. Have a look at proxy_hook_fixups() in mod_proxy.h.
>>
>> I just tried proxy_hook_fixups and it runs even before the proxy gets the 
>> content from the backend which is not what I need, I also tried the other 
>> hook proxy_hook_request_status and this one runs after the content has been 
>> sent to the client which means changing the headers in it will have no 
>> effect.
>>
>> I found proxy_hook_post_request which fits nicely to where I need to change 
>> the headers but it is only executed when the backend sends an error so that 
>> won't work as well.
> 
> post_request should always run, excluding error conditions like bad
> requests. Maybe that behaviour has changed over time but I don't think
> so, most of the code in mod_proxy is pretty old.
> 
>> Did I miss something here?

As far as I can see, mod_sed, mod_substitute and mod_proxy_html all need
to do something similar and all three do it in a filter, not in a hook.

mod_substitute is part of httpd 2.2 and trunk, mod_sed of trunk and
mod_proxy_html is available form Nick Kew's website. Have a look at
those as examples.

Regards,

Rainer

Reply via email to