Maxim Dounin
March 25, 2013 10:56AM
Hello!

On Mon, Mar 25, 2013 at 06:46:09PM +0400, Marat Dakota wrote:

> >> >> But is it ok to call next body filter in subrequest's body filter to
> >> >> produce output to main request?
> >> >> I mean ngx_http_next_body_filter(r->main, out).
> >> >
> >> > No. You should call next body filter of the request you are
> >> > working with. It's postpone filter responsibility to manage
> >> > subrequests output, and if you try to do this yourself instead -
> >> > result will be undefined.
> >>
> >> It seems to work as expected for me. How can I cause problems with this?
> >
> > Undefined behaviour sometimes appear to work as expected. This
> > doesn't mean it's correct though.
> >
> > Depending on the exact place in a filter chain where you did it
> > and various other factors like timings, results may vary from
> > "nothing bad might happen, as r == r->main anyway" to "response
> > will completely incorrect as wrong filters will be applied to the
> > response body".
> >
> > Most trivial thing to test is probably a subrequest order, which
> > likely will be wrong in your case if first subrequest will take
> > longer to handle than second one.
>
> Subrequests order doesn't matter much for me. I feed my library (the
> one I write a Nginx module for) with a subrequests results in a
> whatever order and my library returns next chunk of response only when
> it is ready.
>
> My library has just one function to call. This function returns the
> next chunk of data (if any) to send as a response and/or a list of
> subrequests to make. In every call to subrequest body filter I pass
> subrequest's response to my library and get a new list of subrequests
> (if any) and a new chunk of final response (if any). And so on, until
> my library says it's done.
>
> And if I really do something wrong in terms of Nginx architecture,
> please, could you give me more details about how to achieve my goals
> correctly?

I don't really see why you don't call ngx_http_next_body_filter(r,
out), which is perfectly correct.

--
Maxim Dounin
http://nginx.org/en/donation.html

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

Subrequests from body filters

Marat Dakota 982 March 24, 2013 01:14PM

Re: Subrequests from body filters

Marat Dakota 448 March 24, 2013 05:16PM

Re: Subrequests from body filters

Marat Dakota 555 March 24, 2013 05:40PM

Re: Subrequests from body filters

Maxim Dounin 503 March 25, 2013 07:58AM

Re: Subrequests from body filters

Marat Dakota 470 March 25, 2013 09:42AM

Re: Subrequests from body filters

Maxim Dounin 441 March 25, 2013 09:48AM

Re: Subrequests from body filters

Marat Dakota 457 March 25, 2013 09:54AM

Re: Subrequests from body filters

Maxim Dounin 460 March 25, 2013 10:22AM

Re: Subrequests from body filters

Marat Dakota 407 March 25, 2013 10:48AM

Re: Subrequests from body filters

Maxim Dounin 483 March 25, 2013 10:56AM

Re: Subrequests from body filters

Marat Dakota 465 March 25, 2013 11:42AM

Re: Subrequests from body filters

Maxim Dounin 408 March 25, 2013 12:02PM

Re: Subrequests from body filters

Marat Dakota 448 March 25, 2013 12:24PM

Re: Subrequests from body filters

Maxim Dounin 652 March 25, 2013 02:12PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 160
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready