# HG changeset patch # User Vladimir Homutov # Date 1601580051 -10800 # Node ID a6784cf32c13c24c4fc6e7091aef565b885099fc # Parent 0875101c08f726c924bb2829083b68e799861367 QUIC: fixed handling of incorrect packets. Instead of ignoring, connection was closed. This was broken in d0d3fc0697a0. diff --git a/src/event/ngx_event_quic_transport.c b/src/event/ngx_event_quic_transport.c --- a/src/event/ngx_event_quic_transport.c +++ b/src/event/ngx_event_quic_transport.c @@ -256,7 +256,12 @@ ngx_quic_parse_packet(ngx_quic_header_t if (!ngx_quic_long_pkt(pkt->flags)) { pkt->level = ssl_encryption_application; - return ngx_quic_parse_short_header(pkt, NGX_QUIC_SERVER_CID_LEN); + if (ngx_quic_parse_short_header(pkt, NGX_QUIC_SERVER_CID_LEN) != NGX_OK) + { + return NGX_DECLINED; + } + + return NGX_OK; } if (ngx_quic_parse_long_header(pkt) != NGX_OK) { @@ -277,7 +282,11 @@ ngx_quic_parse_packet(ngx_quic_header_t pkt->level = ssl_encryption_initial; - return ngx_quic_parse_initial_header(pkt); + if (ngx_quic_parse_initial_header(pkt) != NGX_OK) { + return NGX_DECLINED; + } + + return NGX_OK; } if (ngx_quic_pkt_hs(pkt->flags)) { @@ -292,7 +301,11 @@ ngx_quic_parse_packet(ngx_quic_header_t return NGX_DECLINED; } - return ngx_quic_parse_handshake_header(pkt); + if (ngx_quic_parse_handshake_header(pkt) != NGX_OK) { + return NGX_DECLINED; + } + + return NGX_OK; }