QUIC: fixed rttvar on subsequent RTT samples (ticket #2505).

Previously, computing rttvar used an updated smoothed_rtt value as per
RFC 9002, section 5.3, which appears to be specified in a wrong order.
A technical errata ID 7539 is reported.
This commit is contained in:
Sergey Kandaurov 2023-06-12 23:38:56 +04:00
parent 6915d2fb2e
commit e3d2bd0a10

View File

@ -207,9 +207,9 @@ ngx_quic_rtt_sample(ngx_connection_t *c, ngx_quic_ack_frame_t *ack,
adjusted_rtt -= ack_delay;
}
qc->avg_rtt += (adjusted_rtt >> 3) - (qc->avg_rtt >> 3);
rttvar_sample = ngx_abs((ngx_msec_int_t) (qc->avg_rtt - adjusted_rtt));
qc->rttvar += (rttvar_sample >> 2) - (qc->rttvar >> 2);
qc->avg_rtt += (adjusted_rtt >> 3) - (qc->avg_rtt >> 3);
}
ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0,