# HG changeset patch # User Sergey Kandaurov # Date 1702398051 -14400 # Node ID ff452f283aa9bf596c3d6847e87375e305083789 # Parent a6f79f044de58b594563ac03139cd5e2e6a81bdb QUIC: reset RTT estimator for the new path. RTT is a property of the path, it must be reset on confirming a peer's ownership of its new address. diff -r a6f79f044de5 -r ff452f283aa9 src/event/quic/ngx_event_quic.c --- a/src/event/quic/ngx_event_quic.c Wed Nov 29 10:58:21 2023 +0400 +++ b/src/event/quic/ngx_event_quic.c Tue Dec 12 20:20:51 2023 +0400 @@ -260,14 +260,7 @@ ngx_queue_init(&qc->free_frames); - qc->avg_rtt = NGX_QUIC_INITIAL_RTT; - qc->rttvar = NGX_QUIC_INITIAL_RTT / 2; - qc->min_rtt = NGX_TIMER_INFINITE; - qc->first_rtt = NGX_TIMER_INFINITE; - - /* - * qc->latest_rtt = 0 - */ + ngx_quic_init_rtt(qc); qc->pto.log = c->log; qc->pto.data = c; diff -r a6f79f044de5 -r ff452f283aa9 src/event/quic/ngx_event_quic_connection.h --- a/src/event/quic/ngx_event_quic_connection.h Wed Nov 29 10:58:21 2023 +0400 +++ b/src/event/quic/ngx_event_quic_connection.h Tue Dec 12 20:20:51 2023 +0400 @@ -65,6 +65,13 @@ #define ngx_quic_get_socket(c) ((ngx_quic_socket_t *)((c)->udp)) +#define ngx_quic_init_rtt(qc) \ + (qc)->avg_rtt = NGX_QUIC_INITIAL_RTT; \ + (qc)->rttvar = NGX_QUIC_INITIAL_RTT / 2; \ + (qc)->min_rtt = NGX_TIMER_INFINITE; \ + (qc)->first_rtt = NGX_TIMER_INFINITE; \ + (qc)->latest_rtt = 0; + typedef enum { NGX_QUIC_PATH_IDLE = 0, diff -r a6f79f044de5 -r ff452f283aa9 src/event/quic/ngx_event_quic_migration.c --- a/src/event/quic/ngx_event_quic_migration.c Wed Nov 29 10:58:21 2023 +0400 +++ b/src/event/quic/ngx_event_quic_migration.c Tue Dec 12 20:20:51 2023 +0400 @@ -181,6 +181,8 @@ 14720)); qc->congestion.ssthresh = (size_t) -1; qc->congestion.recovery_start = ngx_current_msec; + + ngx_quic_init_rtt(qc); } path->validated = 1;