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.
This commit is contained in:
Olivier Houchard 2019-07-08 16:30:32 +02:00 committed by Olivier Houchard
parent ac52095098
commit a1ab97316f

View File

@ -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]);
}
}