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.

(cherry picked from commit 5f5c94617e33382621d43c3ccf0af7049c80d9c6)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 93d4c5ed758a171c625030ecbe2b2cbf3d0ca1af)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 9a44ca36c13535b438009a86ac7a7796c07e5711)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 57d96ca48fc463a75e840c03c88e8ddb166c4631)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/channel.c b/src/channel.c
index 524d104..94dfbcf 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;