Buffers Chain

Maxim Dounin mdounin at mdounin.ru
Fri May 23 13:41:08 UTC 2014


Hello!

On Fri, May 23, 2014 at 02:17:27PM +0100, Paulo Silva wrote:

> Hi,
> 
> On Fri, May 23, 2014 at 12:58 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> > Hello!
> >
> > On Fri, May 23, 2014 at 11:57:20AM +0100, Paulo Silva wrote:
> >
> >> there is other option than modify the auto/modules file?
> >>
> >> According to my goal (capture the full request response body) I would
> >> say that my module must run right before the postpone.
> >
> > Before the postpone filter you'll get subrequest bodies in your
> > filter, which is probably not what you want (the postpone filter
> > is to glue subrequest together, correctly ordered).
> >
> >> Am I supposed to modify the auto/modules like follows?
> >>
> >> if [ $HTTP_POSTPONE = YES ]; then
> >>     HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_POSTPONE_FILTER_MODULE"
> >>     HTTP_SRCS="$HTTP_SRCS $HTTP_POSTPONE_FILTER_SRCS"
> >> fi
> >>
> >> # insert my module here!
> >>
> >> if [ $HTTP_SSI = YES ]; then
> >>     have=NGX_HTTP_SSI . auto/have
> >>     HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_SSI_FILTER_MODULE"
> >>     HTTP_DEPS="$HTTP_DEPS $HTTP_SSI_DEPS"
> >>     HTTP_SRCS="$HTTP_SRCS $HTTP_SSI_SRCS"
> >> fi
> >>
> >>
> >> I did check my modules config file and I did realize that it is
> >> "queued" as HTTP_AUX_FILTER_MODULES. There are different queues for
> >> core modules and addons?
> >
> > The HTTP_AUX_FILTER_MODULES is a generic queue, and it's the
> > only one currently officially supported for 3rd party modules.
> >
> > If you want your filter to be called right before/after postpone
> > filter, it should be relatively safe to put it into the
> > HTTP_POSTPONE_FILTER_MODULE variable though (and may be with some
> > additional checks to make sure the postpone filter is enabled, or
> > just a code to enable it unconditionally).
> >
> 
> And this is also valid when compiling nginx with the --add-module flag?
> How does config file look like?
> 
> My knowledge is restricted to Emiller's Guide To Nginx Module
> Development (http://www.evanmiller.org/nginx-modules-guide.html) and a
> few debugging hours.

Uhm, looking again into auto/modules I think I was wrong, and 
modifying the HTTP_POSTPONE_FILTER_MODULE variable won't work 
(added module config scripts are executed later on), you should 
modify HTTP_FILTER_MODULES variable instead, and put your module 
into a proper position.

Note that the "config" file of a module is just a shell script, 
and you are free to do more or less anything there.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx-devel mailing list