During fast-forward, if the SC is waiting for a minimum free space to
receive more data and some data was sent, it is only unblock is the
condition is respected. 0 is special case where the SC is unconditionally
unblocked.
/* check if the consumer has freed some space either in the
* buffer or in the pipe.
*/
- if (new_len < last_len)
+ if (!sc->room_needed || (new_len < last_len && (sc->room_needed < 0 || channel_recv_max(ic) >= sc->room_needed)))
sc_have_room(sc);
}