QUIC: handle ACK frames with ECN counts

RFC 9000 section 19.3 requires implementations to accept both ACK
frame types: 0x02 (without ECN counts) and 0x03 (with ECN counts).

Previously, nginx would close the connection with "missing frame handler"
error when receiving ACK frames with ECN counts, even though the parser
already correctly handles them.

This adds the missing case to handle NGX_QUIC_FT_ACK_ECN frames, treating
them identically to NGX_QUIC_FT_ACK frames. The ECN counters are parsed
but not used, which is compliant with the specification.

Fixes #945
This commit is contained in:
TheBitBrine 2025-10-26 00:46:23 +00:00
parent c93a0c48af
commit 6919b23514
1 changed files with 1 additions and 0 deletions

View File

@ -1231,6 +1231,7 @@ ngx_quic_handle_frames(ngx_connection_t *c, ngx_quic_header_t *pkt)
switch (frame.type) { switch (frame.type) {
case NGX_QUIC_FT_ACK: case NGX_QUIC_FT_ACK:
case NGX_QUIC_FT_ACK_ECN:
if (ngx_quic_handle_ack_frame(c, pkt, &frame) != NGX_OK) { if (ngx_quic_handle_ack_frame(c, pkt, &frame) != NGX_OK) {
return NGX_ERROR; return NGX_ERROR;
} }