QUIC: fixed padding of initial packets in case of limited path.

Previously, non-padded initial packet could be sent as a result of the
following situation:

 - initial queue is not empty (so padding to 1200 is required)
 - handshake queue is not empty (so padding is to be added after h/s packet)
 - path is limited

If serializing handshake packet would violate path limit, such packet was
omitted, and the non-padded initial packet was sent.

The fix is to avoid sending the packet at all in such case.  This follows the
original intention introduced in c5155a0cb12f.
This commit is contained in:
Vladimir Homutov 2022-02-02 14:16:48 +03:00
parent afe8ad39f0
commit 144c6f6aa7
1 changed files with 8 additions and 1 deletions

View File

@ -158,7 +158,14 @@ ngx_quic_create_datagrams(ngx_connection_t *c)
? NGX_QUIC_MIN_INITIAL_SIZE - (p - dst) : 0;
if (min > len) {
continue;
/* padding can't be applied - avoid sending the packet */
for (i = 0; i < NGX_QUIC_SEND_CTX_LAST; i++) {
ctx = &qc->send_ctx[i];
ngx_quic_revert_send(c, ctx, preserved_pnum[i]);
}
return NGX_OK;
}
n = ngx_quic_output_packet(c, ctx, p, len, min);