changeset 8696:88c9c868a7c9 quic

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.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 04 Feb 2021 20:39:47 +0300
parents 0b3d70fbba99
children faa3201ff351
files src/event/quic/ngx_event_quic.c
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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 
         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;