]> git.kaiwu.me - nginx.git/commitdiff
QUIC: fixed padding calculation.
authorVladimir Homutov <vl@nginx.com>
Mon, 5 Jul 2021 10:17:10 +0000 (13:17 +0300)
committerVladimir Homutov <vl@nginx.com>
Mon, 5 Jul 2021 10:17:10 +0000 (13:17 +0300)
Sometimes, QUIC packets need to be of certain (or minimal) size.  This is
achieved by adding PADDING frames.  It is possible, that adding padding will
affect header size, thus forcing us to recalculate padding size once more.

src/event/quic/ngx_event_quic_output.c

index 26b046b148751c00392e7e41ce4a858e5fe0992e..688ae67fe15964aed5e2f75225d4479a6078d211 100644 (file)
@@ -368,6 +368,9 @@ ngx_quic_output_packet(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx,
     }
 
     if (out.len < pad_len) {
+        /* compensate for potentially enlarged header in Length bytes */
+        pad_len -= ngx_quic_create_header(&pkt, NULL, pad_len, NULL)
+                   - ngx_quic_create_header(&pkt, NULL, out.len, NULL);
         ngx_memset(p, NGX_QUIC_FT_PADDING, pad_len - out.len);
         out.len = pad_len;
     }