BUG/MEDIUM: stream_interface: Only use SI_ST_RDY when the mux is ready.

In si_connect(), only switch the strema_interface status to SI_ST_RDY if
we're reusing a connection and if the connection's mux is ready. Otherwise,
maybe we're reusing a connection that is not fully established yet, and may
fail, and setting SI_ST_RDY would mean we would not be able to retry to
connect.

This should be backported to 1.9 and 2.0.
This commit depends on 55234e33708c5a584fb9efea81d71ac47235d518.
This commit is contained in:
Olivier Houchard 2019-10-25 16:25:20 +02:00 committed by Olivier Houchard
parent 9b8e11e691
commit 6e8e2ec849

View File

@ -521,7 +521,11 @@ static inline int si_connect(struct stream_interface *si, struct connection *con
/* try to reuse the existing connection, it will be /* try to reuse the existing connection, it will be
* confirmed once we can send on it. * confirmed once we can send on it.
*/ */
/* Is the connection really ready ? */
if (conn->mux->ctl(conn, MUX_STATUS, NULL) & MUX_STATUS_READY)
si->state = SI_ST_RDY; si->state = SI_ST_RDY;
else
si->state = SI_ST_CON;
} }
/* needs src ip/port for logging */ /* needs src ip/port for logging */