]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] do not release the connection slot during a retry
authorWilly Tarreau <w@1wt.eu>
Sun, 14 Sep 2008 15:40:09 +0000 (17:40 +0200)
committerWilly Tarreau <w@1wt.eu>
Sun, 14 Sep 2008 15:40:09 +0000 (17:40 +0200)
A bug was introduced during last queue management fix. If a server
connection fails, the allocated connection slot is released, but it
will be needed again after the turn-around. This also causes more
connections than expected to go to the server because it appears to
have less connections than real.

Many thanks to Rupert Fiasco, Mark Imbriaco, Cody Fauser, Brian
Gupta and Alexander Staubo for promptly providing configuration
and diagnosis elements to help reproduce this problem easily.

src/proto_http.c

index 425fde648e8e90a9ee82086ea7cd7add2ea5f99e..7500798e7794a394b2165fccbbe6f22e9ce50c34 100644 (file)
@@ -2686,10 +2686,8 @@ int process_srv(struct session *t)
                        }
                        else {
                                fd_delete(t->srv_fd);
-                               if (t->srv) {
+                               if (t->srv)
                                        t->srv->cur_sess--;
-                                       sess_change_server(t, NULL);
-                               }
 
                                if (!(req->flags & BF_WRITE_STATUS))
                                        conn_err = SN_ERR_SRVTO; // it was a connect timeout.