Is there a bug in ngx_http_upstream_module's broken connection check code?

speedfirst nginx-forum at nginx.us
Thu Jun 23 08:14:47 MSD 2011


In the function "ngx_http_upstream_check_broken_connection" of
ngx_http_upstream.c, there is a code segment like below:


 n = recv(c->fd, buf, 1, MSG_PEEK);
...
 else { /* n == 0 */
        err = 0;
    }

Here use whether receiving 0 bytes from downstream client to judge
whether the connection has been closed. However, if the downstream
connection is https, and the connection is cosed, this n will never be
0. So the code fails to check the broken connection for https.

My test is create a connection by firefox and click the "Stop" button in
the firefox. If the connection is http, n will be 0; but if the
connection is https, n is always 1. I try to increase the peek read
limit from 1 to 1000 and then n will get 37.

So is it a bug or I misunderstand something?

Thanks.

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,209276,209276#msg-209276




More information about the nginx mailing list