BUG/MEDIUM: channel: Improve reports for shut in co_getblk()
When co_getblk() is called with a length and an offset to 0, shutdown is
never reported. It may be an issue when the function is called to retrieve
all available output data, while there is no output data at all. And it
seems pretty annoying to handle this case in the caller.
Thus, now, in co_getblk(), -1 is returned when the channel is empty and a
shutdown was received.
There is no real reason to backport this patch alone. However, another fix
will rely on it.
diff --git a/src/channel.c b/src/channel.c
index 62fff1b..68360d9 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -398,7 +398,7 @@
if (chn->flags & CF_SHUTW)
return -1;
- if (len + offset > co_data(chn)) {
+ if (len + offset > co_data(chn) || co_data(chn) == 0) {
if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW))
return -1;
return 0;