diff options
author | Roman Arutyunyan <arut@nginx.com> | 2020-09-06 14:51:23 +0300 |
---|---|---|
committer | Roman Arutyunyan <arut@nginx.com> | 2020-09-06 14:51:23 +0300 |
commit | 6983bc0a37bdec605b471643c2e6a0b0f6d6140f (patch) | |
tree | 9120de22abe3f0c1050098f3ceeab0064eeb4d1e /src | |
parent | d6065b2791ad41b6d0b1730ee085dcc8a4dde736 (diff) | |
download | nginx-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.c | 2 |
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; |