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