From 8a8199e4a1814b10630a770165502abb1121cd1b Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Nov 2016 15:13:33 +0100 Subject: patch 8.0.0103 Problem: May not process channel readahead. (skywind) Solution: If there is readahead don't block on input. --- src/channel.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/channel.c') diff --git a/src/channel.c b/src/channel.c index 19520e200..6c5a4ff1d 100644 --- a/src/channel.c +++ b/src/channel.c @@ -3899,6 +3899,31 @@ channel_parse_messages(void) return ret; } +/* + * Return TRUE if any channel has readahead. That means we should not block on + * waiting for input. + */ + int +channel_any_readahead(void) +{ + channel_T *channel = first_channel; + ch_part_T part = PART_SOCK; + + while (channel != NULL) + { + if (channel_has_readahead(channel, part)) + return TRUE; + if (part < PART_ERR) + ++part; + else + { + channel = channel->ch_next; + part = PART_SOCK; + } + } + return FALSE; +} + /* * Mark references to lists used in channels. */ -- cgit v1.2.1