comparison src/event/ngx_event_quic.c @ 8077: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
comparison
equal deleted inserted replaced
8076:3afaaaa930ab 8077:62db595a86b5
4893 } 4893 }
4894 4894
4895 if ((qs->id & NGX_QUIC_STREAM_SERVER_INITIATED) == 0 4895 if ((qs->id & NGX_QUIC_STREAM_SERVER_INITIATED) == 0
4896 || (qs->id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0) 4896 || (qs->id & NGX_QUIC_STREAM_UNIDIRECTIONAL) == 0)
4897 { 4897 {
4898 if (!c->read->eof && !c->read->error) { 4898 if (!c->read->pending_eof && !c->read->error) {
4899 frame = ngx_quic_alloc_frame(pc, 0); 4899 frame = ngx_quic_alloc_frame(pc, 0);
4900 if (frame == NULL) { 4900 if (frame == NULL) {
4901 return; 4901 return;
4902 } 4902 }
4903 4903