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.
This commit is contained in:
Roman Arutyunyan 2020-09-06 14:51:23 +03:00
parent d6065b2791
commit 6983bc0a37

View File

@ -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;