aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2023-05-09 19:42:38 +0400
committerSergey Kandaurov <pluknet@nginx.com>2023-05-09 19:42:38 +0400
commitf0537cf17cec8a823c5b81c8f07a2508d7366720 (patch)
treec7c8d16302b3e4023f2ce8bc4ab2797672621942 /src
parent1465a34067b927963b311136bf15a79981cb9d6e (diff)
downloadnginx-f0537cf17cec8a823c5b81c8f07a2508d7366720.tar.gz
nginx-f0537cf17cec8a823c5b81c8f07a2508d7366720.zip
QUIC: removed check for in-flight packets in computing PTO.
The check is needed for clients in order to unblock a server due to anti-amplification limits, and it seems to make no sense for servers. See RFC 9002, A.6 and A.8 for a further explanation. This makes max_ack_delay to now always account, notably including PATH_CHALLENGE timers as noted in the last paragraph of 9000, 9.4, unlike when it was only used when there are packets in flight. While here, fixed nearby style.
Diffstat (limited to 'src')
-rw-r--r--src/event/quic/ngx_event_quic_ack.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/event/quic/ngx_event_quic_ack.c b/src/event/quic/ngx_event_quic_ack.c
index d236deb59..2458c9aea 100644
--- a/src/event/quic/ngx_event_quic_ack.c
+++ b/src/event/quic/ngx_event_quic_ack.c
@@ -782,15 +782,11 @@ ngx_quic_pto(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
qc = ngx_quic_get_connection(c);
/* RFC 9002, Appendix A.8. Setting the Loss Detection Timer */
- duration = qc->avg_rtt;
+ duration = qc->avg_rtt;
duration += ngx_max(4 * qc->rttvar, NGX_QUIC_TIME_GRANULARITY);
duration <<= qc->pto_count;
- if (qc->congestion.in_flight == 0) { /* no in-flight packets */
- return duration;
- }
-
if (ctx->level == ssl_encryption_application && c->ssl->handshaked) {
duration += qc->ctp.max_ack_delay << qc->pto_count;
}