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.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index e0f6991..c0f88b2 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -521,7 +521,11 @@
/* try to reuse the existing connection, it will be
* confirmed once we can send on it.
*/
- si->state = SI_ST_RDY;
+ /* Is the connection really ready ? */
+ if (conn->mux->ctl(conn, MUX_STATUS, NULL) & MUX_STATUS_READY)
+ si->state = SI_ST_RDY;
+ else
+ si->state = SI_ST_CON;
}
/* needs src ip/port for logging */