diff options
author | Sergey Kandaurov <pluknet@nginx.com> | 2023-05-09 19:42:38 +0400 |
---|---|---|
committer | Sergey Kandaurov <pluknet@nginx.com> | 2023-05-09 19:42:38 +0400 |
commit | f0537cf17cec8a823c5b81c8f07a2508d7366720 (patch) | |
tree | c7c8d16302b3e4023f2ce8bc4ab2797672621942 /src | |
parent | 1465a34067b927963b311136bf15a79981cb9d6e (diff) | |
download | nginx-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.c | 6 |
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; } |