MEDIUM: servers: Store the connection in the SI until we have a mux.
When we create a connection, if we have to defer the conn_stream and the
mux creation until we can decide it (ie until the SSL handshake is done, and
the ALPN is decided), store the connection in the stream_interface, so that
we're sure we can destroy it if needed.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 5568fdb..a091439 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -161,6 +161,7 @@
*/
static inline void si_release_endpoint(struct stream_interface *si)
{
+ struct connection *conn;
struct conn_stream *cs;
struct appctx *appctx;
@@ -177,7 +178,8 @@
if (appctx->applet->release && si->state < SI_ST_DIS)
appctx->applet->release(appctx);
appctx_free(appctx); /* we share the connection pool */
- }
+ } else if ((conn = objt_conn(si->end)))
+ conn_free(conn);
si_detach_endpoint(si);
}