BUG/MEDIUM: channel: don't allow to overwrite the reserve until connected

Commit 9c06ee4 ("BUG/MEDIUM: channel: don't schedule data in transit for
leaving until connected") took care of an issue involving POST in conjunction
with http-send-name-header, where we absolutely never want to touch the
reserve until we're sure not to touch the buffer contents anymore, which
is indicated by the output stream-interface being connected.

But channel_may_recv() was not equipped with such a test, so in some
situations it might decide that it is possible to poll for reads, and
later channel_recv_limit() will decide it's not possible to read,
causing a loop. So we must add a similar test there.

Since the fix above was backported to 1.6 and 1.5, this fix must as well.
(cherry picked from commit 4b46a3e8cce58db03ee90718e39fb3bffb2b7273)
(cherry picked from commit c2c825aed3c76ed9747e47c1078c71ddcb9d06ad)
[wt: note in 1.5 channel_full() returns the opposite value of 1.6's]
1 file changed