summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVladimir Homutov <vl@nginx.com>2021-07-05 13:17:10 +0300
committerVladimir Homutov <vl@nginx.com>2021-07-05 13:17:10 +0300
commit1860eda336fce3fa6a6b1d7c81a904668c7af598 (patch)
tree0ba2fa9564371cc67e46291cfe23b65e7450c3d5
parenta85084fea109c019d1ad7466ed063afa7961acba (diff)
downloadnginx-1860eda336fce3fa6a6b1d7c81a904668c7af598.tar.gz
nginx-1860eda336fce3fa6a6b1d7c81a904668c7af598.tar.bz2
QUIC: fixed padding calculation.
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.
-rw-r--r--src/event/quic/ngx_event_quic_output.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/event/quic/ngx_event_quic_output.c b/src/event/quic/ngx_event_quic_output.c
index 26b046b14..688ae67fe 100644
--- a/src/event/quic/ngx_event_quic_output.c
+++ b/src/event/quic/ngx_event_quic_output.c
@@ -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;
}