aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2021-02-04 20:39:47 +0300
committerRoman Arutyunyan <arut@nginx.com>2021-02-04 20:39:47 +0300
commitdbd812efd2bf08067651f73fc820c2bdce767382 (patch)
treeafbe6b3898559c7e4eab1ac77c9dc774caf9be21 /src
parent56a11126e8ce2bc643806a2e1263a512a595fde0 (diff)
downloadnginx-dbd812efd2bf08067651f73fc820c2bdce767382.tar.gz
nginx-dbd812efd2bf08067651f73fc820c2bdce767382.zip
QUIC: disabled non-immediate ACKs for Initial and Handshake.
As per quic-transport-33: An endpoint MUST acknowledge all ack-eliciting Initial and Handshake packets immediately If a packet carrying Initial or Handshake ACK was lost, a non-immediate ACK should not be sent later. Instead, client is expected to send a new packet to acknowledge. Sending non-immediate ACKs for Initial packets can cause the client to generate an inflated RTT sample.
Diffstat (limited to 'src')
-rw-r--r--src/event/quic/ngx_event_quic.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/event/quic/ngx_event_quic.c b/src/event/quic/ngx_event_quic.c
index 6159e87e1..7e6c60ef0 100644
--- a/src/event/quic/ngx_event_quic.c
+++ b/src/event/quic/ngx_event_quic.c
@@ -5527,8 +5527,11 @@ ngx_quic_resend_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
switch (f->type) {
case NGX_QUIC_FT_ACK:
case NGX_QUIC_FT_ACK_ECN:
- /* force generation of most recent acknowledgment */
- ctx->send_ack = NGX_QUIC_MAX_ACK_GAP;
+ if (ctx->level == ssl_encryption_application) {
+ /* force generation of most recent acknowledgment */
+ ctx->send_ack = NGX_QUIC_MAX_ACK_GAP;
+ }
+
ngx_quic_free_frame(c, f);
break;