Nginx resets connection

Hello,

I found a bug in the request finalization on linux:

If the server has a keep-alive set to 0 and the client sends pipelined
requests which exeeds client_header_buffer_size, nginx closes the
connection and linux sends a TCP RST since there is still data in
the TCP buffer of the kernel. This results in an incomplete transfer on
the client site.

One possible solution would be to allow pipelined request even if
keep-alive is set to zero. Another one would be to wait until the kernel
receives the ACK for all pending data in the send buffer.

Regards,
Gerhard

Hello!

On Thu, Mar 17, 2011 at 12:09:53AM +0100, Gerhard Heift wrote:

One possible solution would be to allow pipelined request even if
keep-alive is set to zero. Another one would be to wait until the kernel
receives the ACK for all pending data in the send buffer.

Yes, thank you for report. Pipilining in nginx currently have
some rough edges and need for lingering close is one of them.

Maxim D.