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 5a79f55dab
commit 3b4d10caf6

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);