Welcome! Log In Create A New Profile

Advanced

Re: Subrequest using Parent Request Body

Maxim Dounin
May 10, 2010 09:48PM
Hello!

On Fri, May 07, 2010 at 03:38:54PM -0700, Matthieu Tourne wrote:

> I'm trying to send a POST Subrequest using the same request_body as the
> Parent Request.
> The subrequest is sent first, and once it has been finalized the parent
> request goes through.
> (this is inspired on Maxim's ngx_http_auth_request_module)
>
> It works almost fine, but if I try to make this subrequest to a location
> containing a proxy_pass, I get some weird behavior. (The connection takes
> forever to terminate).
>
> My guess is that the request_body gets read by the upstream, and discarded.
> When the parent request goes through, that data is not available anymore.

If you issue subrequest before request body was read by main
request, you likely get SIGSEGV on an attempt to read it. If you
didn't - you probably just didn't used -DDEBUG_MALLOC while
compiling nginx (or appropriate malloc options in your OS). It's
only possible to read request body in main request.

> If I create a dummy request_body for the subrequest with temporary buffers,
> it seems to work fine.
>
> I think I might be able to get around this by reading first the original
> request_body using ngx_http_read_client_request_body(),
> and then copying the content of r->request_body to temporary buffers in my
> subrequest.

There is no good/reliable way to preserve request body and use it
for two upstream requests. There are no problems with in-memory
buffer (at least I'm not aware of), but once your request body is
buffered to temporary file - it will be released by first
successful upstream request (see ngx_http_upstream_send_response()
in ngx_http_upstream.c).

Using dupfd() on temporary file descriptor may be an option, but
it's your responsibility to do it properly.

Maxim Dounin

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

Subrequest using Parent Request Body

Matthieu Tourne May 07, 2010 06:42PM

Re: Subrequest using Parent Request Body

peterjanovsky May 09, 2010 08:30PM

Re: Subrequest using Parent Request Body

agentzh May 09, 2010 11:16PM

Re: Subrequest using Parent Request Body

Maxim Dounin May 10, 2010 09:48PM

Re: Subrequest using Parent Request Body

Matthieu Tourne May 12, 2010 03:20PM

Re: Subrequest using Parent Request Body

Maxim Dounin May 12, 2010 05:26PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 302
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready