From: Olivier Houchard Date: Mon, 8 Jul 2019 14:30:32 +0000 (+0200) Subject: BUG/MEDIUM: servers: Don't forget to set srv_cs to NULL if we can't reuse it. X-Git-Tag: v2.1-dev1~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a1ab97316f34dc3b478cd076b76b01c0e23b8769;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: servers: Don't forget to set srv_cs to NULL if we can't reuse it. In connect_server(), if there were already a CS assosciated with the stream, but we can't reuse it, because the target is different (because we tried a previous connection, it failed, and we use redispatch so we switched servers), don't forget to set srv_cs to NULL. Otherwise, if we end up reusing another connection, we would consider we already have a conn_stream, and we won't create a new one, so we'd have a new connection but we would not be able to use it. This can explain frozen streams and connections stuck in CLOSE_WAIT when using redispatch. This should be backported to 1.9 and 2.0. --- diff --git a/src/backend.c b/src/backend.c index 37a67c9048..05fefcdf37 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1235,6 +1235,7 @@ int connect_server(struct stream *s) old_conn = srv_conn; } else { srv_conn = NULL; + srv_cs = NULL; si_release_endpoint(&s->si[1]); } }