From 186dcdd128db7e056645a70b64beb4cdfc4cf5de Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 16 Nov 2018 16:18:34 +0100 Subject: [PATCH] MINOR: stream-int: automatically mark applets as ready if they block on the channel If an applet reports being blocked due to any of the channel-side flags, it's reportedly ready to deliver incoming data. It's better to do this after the return from the applet handler so that applet developers don't have to worry about details related to flags ordering. --- src/stream_interface.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/stream_interface.c b/src/stream_interface.c index e23a28389..4e63ed240 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -1422,6 +1422,12 @@ void si_applet_wake_cb(struct stream_interface *si) if (!(si->flags & SI_FL_RX_WAIT_EP) && (ic->flags & CF_SHUTR)) si->flags |= SI_FL_ERR; + /* automatically mark the applet having data available if it reported + * begin blocked by the channel. + */ + if (si_rx_blocked(si)) + si_rx_endp_more(si); + /* update the stream-int, channels, and possibly wake the stream up */ stream_int_notify(si);