summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authornandsky <lishu.zy@alibaba-inc.com>2024-09-30 20:51:17 +0800
committerRoman Arutyunyan <arutyunyan.roman@gmail.com>2024-10-08 19:55:14 +0400
commit3f6d94d8881ca6755b1baa4dd6248a7b7ed15735 (patch)
tree79a3bec419dfabd35ab4b5bd4f7663c5f63141cc /src
parent144778aee6e377c9bcd84368848b2e27871d570f (diff)
downloadnginx-3f6d94d8881ca6755b1baa4dd6248a7b7ed15735.tar.gz
nginx-3f6d94d8881ca6755b1baa4dd6248a7b7ed15735.tar.bz2
QUIC: prevent deleted stream frame retransmissions.
Since a2a513b93cae, 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.
Diffstat (limited to 'src')
-rw-r--r--src/event/quic/ngx_event_quic_ack.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/event/quic/ngx_event_quic_ack.c b/src/event/quic/ngx_event_quic_ack.c
index c7ffd44dd..c953b8042 100644
--- a/src/event/quic/ngx_event_quic_ack.c
+++ b/src/event/quic/ngx_event_quic_ack.c
@@ -631,13 +631,12 @@ ngx_quic_resend_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
case NGX_QUIC_FT_STREAM:
qs = ngx_quic_find_stream(&qc->streams.tree, f->u.stream.stream_id);
- if (qs) {
- if (qs->send_state == NGX_QUIC_STREAM_SEND_RESET_SENT
- || qs->send_state == NGX_QUIC_STREAM_SEND_RESET_RECVD)
- {
- ngx_quic_free_frame(c, f);
- break;
- }
+ if (qs == NULL
+ || qs->send_state == NGX_QUIC_STREAM_SEND_RESET_SENT
+ || qs->send_state == NGX_QUIC_STREAM_SEND_RESET_RECVD)
+ {
+ ngx_quic_free_frame(c, f);
+ break;
}
/* fall through */