mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 23:27:04 +02:00
BUG/MINOR: quic: Missing max_idle_timeout initialization for the connection
This bug was revealed by handshakeloss interop tests (often with quiceh) where one could see haproxy an Initial packet without TLS ClientHello message (only a padded PING frame). In this case, as the ->max_idle_timeout was not initialized, the connection was closed about three seconds later, and haproxy opened a new one with a new source connection ID upon receipt of the next client Initial packet. As the interop runner count the number of source connection ID used by the server to check there were exactly 50 such IDs used by the server, it considered the test as failed. So, the ->max_idle_timeout of the connection must be at least initialized to the local "max_idle_timeout" transport parameter value to avoid such a situation (closing connections too soon) until it is "negotiated" with the client when receiving its TLS ClientHello message. Must be backported to 2.7 and 2.6.
This commit is contained in:
parent
8e6c6611e8
commit
deb978149a
@ -5435,6 +5435,10 @@ static struct quic_conn *qc_new_conn(const struct quic_version *qv, int ipv4,
|
||||
qc->scid.data, qc->scid.len, token_odcid))
|
||||
goto err;
|
||||
|
||||
/* Initialize the idle timeout of the connection at the "max_idle_timeout"
|
||||
* value from local transport parameters.
|
||||
*/
|
||||
qc->max_idle_timeout = qc->rx.params.max_idle_timeout;
|
||||
qc->wait_event.tasklet = tasklet_new();
|
||||
if (!qc->wait_event.tasklet) {
|
||||
TRACE_ERROR("tasklet_new() failed", QUIC_EV_CONN_TXPKT);
|
||||
|
Loading…
Reference in New Issue
Block a user