Mercurial > hg > nginx
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;