mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-20 21:31:28 +02:00
BUG/MEDIUM: ssl: create the mux immediately on early data
If we received early data, and an ALPN has been negociated, then immediately try to create a mux if we did not have one already. Generally, at this point we would not have one, as the mux is decided by the ALPN, however at this point, even if the handshake is not done yet, we have enough to determine the ALPN, so we can immediately create the mux. Doing so makes up able to treat the request immediately, without waiting for the handshake to be done. This should be backported up to 2.8.
This commit is contained in:
parent
aa25ddb773
commit
6b78af837d
@ -5608,9 +5608,22 @@ static int ssl_sock_handshake(struct connection *conn, unsigned int flag)
|
||||
goto check_error;
|
||||
}
|
||||
if (read_data > 0) {
|
||||
const char *alpn;
|
||||
int len;
|
||||
|
||||
TRACE_DEVEL("Early data read", SSL_EV_CONN_HNDSHK, conn, ctx->ssl);
|
||||
conn->flags |= CO_FL_EARLY_DATA;
|
||||
b_add(&ctx->early_buf, read_data);
|
||||
if (ssl_sock_get_alpn(conn, ctx, &alpn, &len) != 0) {
|
||||
/*
|
||||
* We have an ALPN set already, so we
|
||||
* know which mux to use, and we have
|
||||
* early data, let's create the mux
|
||||
* now.
|
||||
*/
|
||||
if (!conn->mux)
|
||||
conn_create_mux(conn, NULL);
|
||||
}
|
||||
}
|
||||
if (ret == SSL_READ_EARLY_DATA_FINISH) {
|
||||
conn->flags &= ~CO_FL_EARLY_SSL_HS;
|
||||
|
Loading…
x
Reference in New Issue
Block a user