BUG/MEDIUM: h2: Don't wait for flow control if the connection had a shutr.
In h2_snd_buf(), if we couldn't send the data because of flow control, and the connection got a shutr, then add CS_FL_ERROR (or CS_FL_ERR_PENDING). We will never get any window update, so we will never be unlocked, anyway. No backport is needed.
This commit is contained in:
parent
fde287cc76
commit
6dea2ee939
12
src/mux_h2.c
12
src/mux_h2.c
@ -4865,6 +4865,18 @@ static size_t h2_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun
|
||||
tasklet_wakeup(h2s->h2c->wait_event.task);
|
||||
|
||||
}
|
||||
/* If we're waiting for flow control, and we got a shutr on the
|
||||
* connection, we will never be unlocked, so add an error on
|
||||
* the conn_stream.
|
||||
*/
|
||||
if (conn_xprt_read0_pending(h2s->h2c->conn) &&
|
||||
!b_data(&h2s->h2c->dbuf) &&
|
||||
(h2s->flags & (H2_SF_BLK_SFCTL | H2_SF_BLK_MFCTL))) {
|
||||
if (cs->flags & CS_FL_EOS)
|
||||
cs->flags |= CS_FL_ERROR;
|
||||
else
|
||||
cs->flags |= CS_FL_ERR_PENDING;
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user