summaryrefslogtreecommitdiffhomepage
path: root/src/event/quic/ngx_event_quic_ack.c
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2025-01-03 11:17:07 +0400
committerRoman Arutyunyan <arutyunyan.roman@gmail.com>2025-04-15 19:01:36 +0400
commit53e7e9eb542fb1d3d885bbca03ed1d704aa08f31 (patch)
treefd47e529f1b60f1e7ccdc3cc4c9c101f4a67a668 /src/event/quic/ngx_event_quic_ack.c
parent3a97111adfb6e538ddef1828bbf04a35a8915c1f (diff)
downloadnginx-53e7e9eb542fb1d3d885bbca03ed1d704aa08f31.tar.gz
nginx-53e7e9eb542fb1d3d885bbca03ed1d704aa08f31.tar.bz2
QUIC: use path MTU in congestion window computations.
As per RFC 9002, Section B.2, max_datagram_size used in congestion window computations should be based on path MTU.
Diffstat (limited to 'src/event/quic/ngx_event_quic_ack.c')
-rw-r--r--src/event/quic/ngx_event_quic_ack.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/event/quic/ngx_event_quic_ack.c b/src/event/quic/ngx_event_quic_ack.c
index 2487ea60d..4616e7053 100644
--- a/src/event/quic/ngx_event_quic_ack.c
+++ b/src/event/quic/ngx_event_quic_ack.c
@@ -353,7 +353,7 @@ ngx_quic_congestion_ack(ngx_connection_t *c, ngx_quic_frame_t *f)
now, cg->window, cg->ssthresh, cg->in_flight);
} else {
- cg->window += qc->tp.max_udp_payload_size * f->plen / cg->window;
+ cg->window += (uint64_t) qc->path->mtu * f->plen / cg->window;
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
"quic congestion ack reno t:%M win:%uz if:%uz",
@@ -552,7 +552,7 @@ ngx_quic_persistent_congestion(ngx_connection_t *c)
now = ngx_current_msec;
cg->recovery_start = now;
- cg->window = qc->tp.max_udp_payload_size * 2;
+ cg->window = qc->path->mtu * 2;
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
"quic congestion persistent t:%M win:%uz", now, cg->window);
@@ -698,8 +698,8 @@ ngx_quic_congestion_lost(ngx_connection_t *c, ngx_quic_frame_t *f)
cg->recovery_start = now;
cg->window /= 2;
- if (cg->window < qc->tp.max_udp_payload_size * 2) {
- cg->window = qc->tp.max_udp_payload_size * 2;
+ if (cg->window < qc->path->mtu * 2) {
+ cg->window = qc->path->mtu * 2;
}
cg->ssthresh = cg->window;