diff ngx_http_upstream_keepalive_module.c @ 42:c53e018dbcf5

Keepalive: do not reject connections with ready flag set. Instead, call read event handler explicitly to test if there are actually any unexpected data. This fixes unbuffered proxy connections not being cached with epoll and rtsig event methods.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 08 Sep 2011 17:12:07 +0400
parents 17b2dbbbce98
children 489c5d4318ff
line wrap: on
line diff
--- a/ngx_http_upstream_keepalive_module.c
+++ b/ngx_http_upstream_keepalive_module.c
@@ -338,7 +338,6 @@ ngx_http_upstream_free_keepalive_peer(ng
     if (kp->failed
         || c == NULL
         || c->read->eof
-        || c->read->ready
         || c->read->error
         || c->read->timedout
         || c->write->error
@@ -428,6 +427,10 @@ ngx_http_upstream_free_keepalive_peer(ng
     item->socklen = pc->socklen;
     ngx_memcpy(&item->sockaddr, pc->sockaddr, pc->socklen);
 
+    if (c->read->ready) {
+        ngx_http_upstream_keepalive_close_handler(c->read);
+    }
+
 invalid:
 
     kp->original_free_peer(pc, kp->data, state);