httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sorin Manolache" <sor...@gmail.com>
Subject Re: ap_get_client_block vs bucket brigades
Date Thu, 17 Jul 2008 21:52:15 GMT
On 2008-07-17, Jason Fister <jasonfister@gmail.com> wrote:
> Hello there,
>
>  I have a module thats working as designed and the only reason I am sending
>  this mail is because I want to confirm what I am doing is the correct way to
>  do it.
>
>  A little background:
>
>  We wanted to convert some legacy services to REST webservice. Clients can
>  upload and retrieve data using this service. So I wrote an apache module
>  that can be accessed at http://www.mydomain.com/rest/<resource>.
>
>  Clients can POST, PUT, GET to this uri. I use ap_get_client_block to read
>  the http body in case of POST and PUT. I know when we use the
>  ap_get_client_block method to read the data, the data is not available that
>  point onwards to any other filter/module and that is totally fine. Thats
>  because when the uri has '/rest' in it, the data is meant for my module.
>
>  I have been doing some online reading and now I am wondering if I shld have
>  used  buckets/brigades in my module.
>
>  1. Is my approach totally wrong?

Just a caveat. Loop like this:

while ((n = ap_get_client_block()) > 0)
 ...

and not

while (already_read < request->remaining) {
   n = ap_get_client_block();
   alread_read += n;
}

request->remaining may be misleading, for example if the client PUSHes
compressed data request->remaining will indicate the size of the
compressed data while your module will most likely read the data that
is already decompressed by the DEFLATE filter on the input filter
chain.

>  2. Will the use of bucket brigades have a positive impact on the
>  performance?

Most likely not.
>
>  Your help in understanding this issue is much appreciated.
>
>
>
>  Jason
>

Mime
View raw message