BUG/MEDIUM: h1: Always try to receive more in h1_rcv_buf().
In h1_rcv_buf(), wake the h1c tasklet as long as we're not done reading the
request/response, and the h1c is not already subscribed for receiving. Now
that we no longer subscribe in h1_recv() if we managed to read data, we
rely on h1_rcv_buf() calling us again, but h1_process_input() may have
returned 0 if we only received part of the request, so we have to wake
the tasklet to be sure to get more data again.
(cherry picked from commit 02bac85bee664976f6dcecc424864e9fb99975be)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
[Cf: Must be backported to 2.0 because of recent changes in the
splicing. Without this patch, if the splicing is disabled because nothing is
read and the pipe is empty, h1_rcv_buf() is called. Because there is nothing in
the input buf, nothing is transferred and H1 connection is not woken up,
freezing the connection.]
1 file changed