aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2020-09-06 14:51:23 +0300
committerRoman Arutyunyan <arut@nginx.com>2020-09-06 14:51:23 +0300
commit6983bc0a37bdec605b471643c2e6a0b0f6d6140f (patch)
tree9120de22abe3f0c1050098f3ceeab0064eeb4d1e /src
parentd6065b2791ad41b6d0b1730ee085dcc8a4dde736 (diff)
downloadnginx-6983bc0a37bdec605b471643c2e6a0b0f6d6140f.tar.gz
nginx-6983bc0a37bdec605b471643c2e6a0b0f6d6140f.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_quic.c2
1 files changed, 1 insertions, 1 deletions
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;