Multiple subrequest in handler

Adrian Perez de Castro adrianperez at udc.es
Mon Sep 10 21:41:05 MSD 2007


I think I have hit another issue related to how subrequests are
handled. I would like to add the module's built-in header and/or footer
when the subrequest fails (i.e. when subreq->headers_out.status is not
NGX_HTTP_OK), and not the error pages generated by the subrequest
handling...

Should remove them from the output chain or is there a better way of
dealing with this?

Thanks again,


El Mon, 10 Sep 2007 14:54:15 +0200
Adrian Perez de Castro <adrianperez at udc.es> escribió:

> But as it is the file listing appears at the *end* of the generated
> response. So, instead of:
> 
>  - header (from subrequest)
>  - listing (generated in handler)
>  - footer (from subrequest)
> 
> I am currently getting this:
> 
>  - header (from subrequest)
>  - footer (from subrequest)
>  - listing (generated in handler)
> 
> ...which is not a proper order at all!
> 
> I took another look at the addition module, and it seems to be called
> *twice* per request and it controls whether to add before or after
> original content depending on the context (checking the boolean of
> ctx->before_body_sent), but about line ~160 it seems to reorder
> buffers in the output chain with this piece of code:
> 
>     last = 0;
> 
>     for (cl = in; cl; cl = cl->next) {
>         if (cl->buf->last_buf) {
>             cl->buf->last_buf = 0;
>             cl->buf->sync = 1;
>             last = 1;
>         }
>     }
> 
> I am using a content handler (as autoindex does) and the addition
> module uses a filter handler... Is it enough for me if I reorder
> buffers or should I rewrite my module using a filter too?



-- 
Adrian Perez de Castro               <adrianperez at udc.es>
Oficina de Software Libre     http://softwarelibre.udc.es
Universidade da Coruña                  http://www.udc.es
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx/attachments/20070910/2536581c/attachment.pgp>


More information about the nginx mailing list