changeset 8539:62db595a86b5 quic

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.
author Roman Arutyunyan <arut@nginx.com>
date Sun, 06 Sep 2020 14:51:23 +0300
parents 3afaaaa930ab
children d45961e062fa
files src/event/ngx_event_quic.c
diffstat 1 files changed, 1 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -4895,7 +4895,7 @@ ngx_quic_stream_cleanup_handler(void *da
     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;