[dev] some questions about subrequests
Sergey Bochenkov
bachan at j3qq4.org
Fri Mar 28 16:14:01 MSK 2008
On Fri, 28 Mar 2008 13:21:31 +0100
Manlio Perillo <manlio_perillo at libero.it>
wrote:
> Sergey Bochenkov ha scritto:
> > NGX_HTTP_ZERO_IN_URI:
> >
> > src/http/ngx_http_core_module.c:
> > sr->zero_in_uri = (flags & NGX_HTTP_ZERO_IN_URI) != 0;
> >
> > src/http/ngx_http_request.h:
> > /* URI with "\0" or "%00" */
> > unsigned zero_in_uri:1;
> >
> > Obviously, IMHO.
> >
>
> Yes, this was easy!
>
> >
> > NGX_HTTP_SUBREQUEST_IN_MEMORY:
> >
> > src/http/ngx_http_core_module.c:
> > sr->subrequest_in_memory = (flags & NGX_HTTP_SUBREQUEST_IN_MEMORY) != 0;
> >
> > src/http/ngx_http_upstream.c:
> > if (!r->subrequest_in_memory) {
> > ngx_http_upstream_send_response(r, u);
> > return;
> > }
> >
> > /* subrequest content in memory */
> >
> > ...
> >
> > So, as I can understand from using-of-subrequests point of view,
> > r->subrequest_in_memory flag tells ngx_http_upstream_module to save a
> > pointer to the full chain of response buffers in r->upstream->out_bufs
> > chain-link. And *not-to-free* that buffers after subrequest was
> > finished.
> >
> > Fix me, if I'm wrong.
> >
>
> I'm not sure, but it seems that I can safely set flags to 0.
>
If you need to keep the upstream response in memory,
NGX_HTTP_SUBREQUEST_IN_MEMORY flag may be useful for you. You can
also set the r->filter_need_in_memory flag in header-filter and read
full response body in the body-filter.
>
> I have one more, important, question.
> When will be the post_subrequest->handler called?
> Always after ngx_http_subrequest returns?
>
The ngx_http_subrequest()-function is asyncronous and returns
immediately after all appropriate fields of ngx_http_request_t
structure will be filled. It doesn't wait for any upstream answer at
all.
The handler will be called after the end of the *subrequest*, not the
end of ngx_http_subrequest()-function call.
Here you can find the appropriate discussion (unfortunately, in
russian): http://article.gmane.org/gmane.comp.web.nginx.russian/11160
>
>
> Thanks Manlio Perillo
>
>
More information about the nginx
mailing list