BUG/MEDIUM: mux-h1: Don't set the flag CS_FL_RCV_MORE when nothing was parsed

When we start to parse a new message, if all headers have not been received,
nothing is copied in the channel's buffer. In this situation, we must not set
the flag CS_FL_RCV_MORE on the conn-stream. If we do so, the connection freezes
because there is no data to send that can reenable the reads
This commit is contained in:
Christopher Faulet 2018-11-19 21:54:26 +01:00
parent d44ad5b8bd
commit 9c38840055

View File

@ -1112,8 +1112,10 @@ static size_t h1_process_input(struct h1c *h1c, struct buffer *buf, int flags)
tasklet_wakeup(h1c->wait_event.task);
}
if (b_data(&h1c->ibuf))
if (b_data(&h1c->ibuf)) {
if (!htx_is_empty(htx))
h1s->cs->flags |= CS_FL_RCV_MORE;
}
else {
h1_release_buf(h1c, &h1c->ibuf);
h1_sync_messages(h1c);