From: Willy Tarreau Date: Tue, 9 Dec 2014 18:47:54 +0000 (+0100) Subject: MEDIUM: stream-int: support splicing from applets X-Git-Tag: v1.6-dev1~209 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9b20c55562e50e976679e9ee3aa8833fecfb453e;p=thirdparty%2Fhaproxy.git MEDIUM: stream-int: support splicing from applets If we want to splice from applets, we must check the pipe before clearing SI_FL_WAIT_ROOM. --- diff --git a/src/stream_interface.c b/src/stream_interface.c index 08c72e56c6..781f449343 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -183,7 +183,7 @@ static void stream_int_update_embedded(struct stream_interface *si) (si->ib->cons->flags & SI_FL_WAIT_DATA)) { si_chk_snd(si->ib->cons); /* check if the consumer has freed some space */ - if (!channel_full(si->ib)) + if (!channel_full(si->ib) && !si->ib->pipe) si->flags &= ~SI_FL_WAIT_ROOM; } @@ -314,7 +314,7 @@ static void stream_int_chk_rcv(struct stream_interface *si) if (unlikely(si->state != SI_ST_EST || (ib->flags & (CF_SHUTR|CF_DONT_READ)))) return; - if (channel_full(ib)) { + if (channel_full(ib) || ib->pipe) { /* stop reading */ si->flags |= SI_FL_WAIT_ROOM; }