Proper setting of read->eof in pipe code.

Setting read->eof to 0 seems to be just a typo.  It appeared in
nginx-0.0.1-2003-10-28-18:45:41 import (r164), while identical code in
ngx_recv.c introduced in the same import do actually set read->eof to 1.

Failure to set read->eof to 1 results in EOF not being generally detectable
from connection flags.  On the other hand, kqueue won't report any read
events on such a connection since we use EV_CLEAR.  This resulted in read
timeouts if such connection was cached and used for another request.
This commit is contained in:
Maxim Dounin 2011-09-01 15:10:41 +00:00
parent a9e3c65d22
commit 82854d0d78

View File

@ -149,7 +149,7 @@ ngx_event_pipe_read_upstream(ngx_event_pipe_t *p)
&& p->upstream->read->pending_eof)
{
p->upstream->read->ready = 0;
p->upstream->read->eof = 0;
p->upstream->read->eof = 1;
p->upstream_eof = 1;
p->read = 1;