QUIC: prevent deleted stream frame retransmissions.

Since a2a513b93c, stream frames no longer need to be retransmitted after it
was deleted.  The frames which were retransmitted before, could be stream data
frames sent prior to a RESET_STREAM. Such retransmissions are explicitly
prohibited by RFC 9000, Section 19.4.
This commit is contained in:
nandsky 2024-09-30 20:51:17 +08:00 committed by Roman Arutyunyan
parent 144778aee6
commit 3f6d94d888

View File

@ -631,13 +631,12 @@ ngx_quic_resend_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
case NGX_QUIC_FT_STREAM: case NGX_QUIC_FT_STREAM:
qs = ngx_quic_find_stream(&qc->streams.tree, f->u.stream.stream_id); qs = ngx_quic_find_stream(&qc->streams.tree, f->u.stream.stream_id);
if (qs) { if (qs == NULL
if (qs->send_state == NGX_QUIC_STREAM_SEND_RESET_SENT || qs->send_state == NGX_QUIC_STREAM_SEND_RESET_SENT
|| qs->send_state == NGX_QUIC_STREAM_SEND_RESET_RECVD) || qs->send_state == NGX_QUIC_STREAM_SEND_RESET_RECVD)
{ {
ngx_quic_free_frame(c, f); ngx_quic_free_frame(c, f);
break; break;
}
} }
/* fall through */ /* fall through */