From d7b29c6529f0b034040459be859d7c63325e9834 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 9 Dec 2014 19:47:54 +0100 Subject: 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. --- src/stream_interface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stream_interface.c b/src/stream_interface.c index 5d68183..5e8a8fb 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; } -- 1.7.12.1