changeset 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 d7643c291ef0
files ngx_http_upstream_keepalive_module.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
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);