apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Graham Leggett <minf...@sharp.fm>
Subject Re: Input filters that alter content-length
Date Fri, 21 Sep 2012 11:05:52 GMT
On 21 Sep 2012, at 12:41 PM, Ivan Prostran <ivan.prostran@bulb.hr> wrote:

> I have the following scenario :
> 
> - Apache/2.2.19 (Solaris 10 SPARC)
> 
>     SetInputFilter alterxmlbody (AP_FTYPE_RESOURCE)
>     SetHandler weblogic-handler

First off, the users@httpd.apache.org list is a better place for this, this is the APR list.

> The handler forwards requests to multiple weblogic servers
> and the filter itself analyzes and/or changes the POST data
> in a way that the length of the incoming request may be changed.
> 
> The question is :
> 
> What is the proper and legitimate way to deal with this situation?
> 
> Should the input filter set the new CL value in "headers_in" before
> returning from the callback, or just remove it from the list?
> 
> apr_off_t length;
> apr_brigade_length     (bb,1,&length);
> apr_table_setn(f->r->headers_in, "Content-Length", apr_off_t_toa(f->r->pool,
length));

This is definitely wrong - a filter can expect to be called multiple times, the above code
assumes you'll be called once.

> or
> 
> apr_table_unset(f->r->headers_in, "Content-Length");

This is the simplest way to do it, a further filter inside httpd will put Content-Length back
if practical.

Look in the httpd source for examples on how filters handle this kind of thing.

Regards,
Graham
--


Mime
View raw message