Mercurial > hg > nginx-quic
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 |