From 6983bc0a37bdec605b471643c2e6a0b0f6d6140f Mon Sep 17 00:00:00 2001 From: Roman Arutyunyan Date: Sun, 6 Sep 2020 14:51:23 +0300 Subject: [PATCH] QUIC: do not send STOP_SENDING after STREAM fin. Previously STOP_SENDING was sent to client upon stream closure if rev->eof and rev->error were not set. This was an indirect indication that no RESET_STREAM or STREAM fin has arrived. But it is indeed possible that rev->eof is not set, but STREAM fin has already been received, just not read out by the application. In this case sending STOP_SENDING does not make sense and can be misleading for some clients. --- src/event/ngx_event_quic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c index f158b0fc7..2364caebf 100644 --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -4895,7 +4895,7 @@ ngx_quic_stream_cleanup_handler(void *data) if ((qs->id & NGX_QUIC_STREAM_SERVER_INITIATED) == 0 || (qs->id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0) { - if (!c->read->eof && !c->read->error) { + if (!c->read->pending_eof && !c->read->error) { frame = ngx_quic_alloc_frame(pc, 0); if (frame == NULL) { return;