BUG/MEDIUM: backend: set the connection owner to the session when using alpn.

In connect_server(), if we can't create the mux immediately because we have
to wait until the alpn is negociated, store the session as the connection's
owner. conn_create_mux() expects it to be set, and provides it to the mux
init() method. Failure to do so will result to crashes later if the
connection is private, and even if we didn't do so it would prevent connection
reuse for private connections.
This should fix github issue #651.
This commit is contained in:
Olivier Houchard 2020-05-27 01:26:06 +02:00
parent d82056c319
commit 68ad53cb37

View File

@ -1407,6 +1407,10 @@ int connect_server(struct stream *s)
srv->mux_proto || s->be->mode != PR_MODE_HTTP)) srv->mux_proto || s->be->mode != PR_MODE_HTTP))
#endif #endif
init_mux = 1; init_mux = 1;
#if defined(USE_OPENSSL) && defined(TLSEXT_TYPE_application_layer_protocol_negotiation)
else
srv_conn->owner = s->sess;
#endif
/* process the case where the server requires the PROXY protocol to be sent */ /* process the case where the server requires the PROXY protocol to be sent */
srv_conn->send_proxy_ofs = 0; srv_conn->send_proxy_ofs = 0;