Welcome! Log In Create A New Profile

Advanced

Re: NGX_AGAIN and POST data

Posted by Anonymous User 
Anonymous User
Re: NGX_AGAIN and POST data
October 11, 2008 09:34PM
> What I want to do is "return ngx_http_output_filter(r, &out);" just
> like before, but that seems to not work, my question is should it work
> from the request_body_handler and is there any special trick to doing
> so or better yet an existing module I can look at for pointers? I
> couldn't find one, virtually everything that uses
> ngx_http_read_client_request_body is an upstream module.

I don't know whether a module doing similar thing exists, but I assume you
invoke ngx_http_send_header, interpret the result, call
ngx_http_output_filter and it should be ok.

--
Best regards,
Valery Kholodkov
Brian Bruns
Re: NGX_AGAIN and POST data
October 15, 2008 05:30AM
Hi Valery,

First, thanks for all your help, I'm slowing getting a handle on the
internal workings of nginx but it's been a bit of a learning curve.

I did some more digging and what I'm finding is that everything is
indeed working correctly except the connection is not closed after the
results are returned. Here is the transaction with my module in the
loop:

request:

POST /hello HTTP/1.0
Content-Length: 10

abcd=12345

response:

HTTP/1.1 200 OK
Server: nginx/0.7.19
Date: Wed, 15 Oct 2008 03:02:41 GMT
Content-Type: text/plain
Content-Length: 11
Last-Modified: Mon, 28 Sep 1970 06:00:00 GMT
Connection: close

hello world

The connection then hangs until another character is sent from the
client to the server at which time it closes.

I've replicated the same request using fastcgi/perl and it works flawlessly.

Any thoughts on why my module would require additional input from the
client to close the connection?

Thanks again,

Brian

2008/10/9 Valery Kholodkov <[email protected]>:
>
>> What I want to do is "return ngx_http_output_filter(r, &out);" just
>> like before, but that seems to not work, my question is should it work
>> from the request_body_handler and is there any special trick to doing
>> so or better yet an existing module I can look at for pointers? I
>> couldn't find one, virtually everything that uses
>> ngx_http_read_client_request_body is an upstream module.
>
> I don't know whether a module doing similar thing exists, but I assume you
> invoke ngx_http_send_header, interpret the result, call
> ngx_http_output_filter and it should be ok.
>
> --
> Best regards,
> Valery Kholodkov
>
>
>
Brian Bruns
Re: NGX_AGAIN and POST data
October 15, 2008 06:00AM
I believe I have solved my problem. At the end of my request body
post_handler, I am now doing this:

ngx_http_send_header(r);
rc = ngx_http_output_filter(r, &out);
ngx_http_finalize_request(r, rc);
return;

I still not sure this is quite right, particularly on which value I
should be sending for the second argument to
ngx_http_finalize_request(), but it does seem to work reliably.

Thank you for all your help,

Brian

2008/10/14 Brian Bruns <[email protected]>:
> Hi Valery,
>
> First, thanks for all your help, I'm slowing getting a handle on the
> internal workings of nginx but it's been a bit of a learning curve.
>
> I did some more digging and what I'm finding is that everything is
> indeed working correctly except the connection is not closed after the
> results are returned. Here is the transaction with my module in the
> loop:
>
> request:
>
> POST /hello HTTP/1.0
> Content-Length: 10
>
> abcd=12345
>
> response:
>
> HTTP/1.1 200 OK
> Server: nginx/0.7.19
> Date: Wed, 15 Oct 2008 03:02:41 GMT
> Content-Type: text/plain
> Content-Length: 11
> Last-Modified: Mon, 28 Sep 1970 06:00:00 GMT
> Connection: close
>
> hello world
>
> The connection then hangs until another character is sent from the
> client to the server at which time it closes.
>
> I've replicated the same request using fastcgi/perl and it works flawlessly.
>
> Any thoughts on why my module would require additional input from the
> client to close the connection?
>
> Thanks again,
>
> Brian
>
> 2008/10/9 Valery Kholodkov <[email protected]>:
>>
>>> What I want to do is "return ngx_http_output_filter(r, &out);" just
>>> like before, but that seems to not work, my question is should it work
>>> from the request_body_handler and is there any special trick to doing
>>> so or better yet an existing module I can look at for pointers? I
>>> couldn't find one, virtually everything that uses
>>> ngx_http_read_client_request_body is an upstream module.
>>
>> I don't know whether a module doing similar thing exists, but I assume you
>> invoke ngx_http_send_header, interpret the result, call
>> ngx_http_output_filter and it should be ok.
>>
>> --
>> Best regards,
>> Valery Kholodkov
>>
>>
>>
>
Sorry, only registered users may post in this forum.

Click here to login