MEDIUM: stream-int: always call si_chk_rcv() when we make room in the buffer

Instead of clearing the SI_FL_WAIT_ROOM flag and losing the information
about the need from the producer to be woken up, we now call si_chk_rcv()
immediately. This is cheap to do and it could possibly be further improved
by only doing it when SI_FL_WAIT_ROOM was still set, though this will
require some extra auditing of the code paths.

The only remaining place where the flag was cleared without a call to
si_chk_rcv() is si_alloc_ibuf(), but since this one is called from a
receive path woken up from si_chk_rcv() or not having failed, the
clearing was not necessary anymore either.

And there was one place in stream_int_notify() where si_chk_rcv() was
called with SI_FL_WAIT_ROOM still explicitly set so this place was
adjusted in order to clear the flag prior to calling si_chk_rcv().

Now we don't have any situation where we randomly clear SI_FL_WAIT_ROOM
without trying to wake the other side up, nor where we call si_chk_rcv()
with the flag set, so this flag should accurately represent a failed
attempt at putting data into the buffer.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index c0f7cda..2d3fe56 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -315,9 +315,8 @@
 }
 
 /* Try to allocate a buffer for the stream-int's input channel. It relies on
- * channel_alloc_buffer() for this so it abides by its rules. It returns 0 in
- * case of failure, non-zero otherwise. The stream-int's flag SI_FL_WAIT_ROOM
- * is cleared before trying. If no buffer are available, the requester,
+ * channel_alloc_buffer() for this so it abides by its rules. It returns 0 on
+ * failure, non-zero otherwise. If no buffer is available, the requester,
  * represented by <wait> pointer, will be added in the list of objects waiting
  * for an available buffer, and SI_FL_WAIT_ROOM will be set on the stream-int.
  * The requester will be responsible for calling this function to try again
@@ -327,7 +326,6 @@
 {
 	int ret;
 
-	si->flags &= ~SI_FL_WAIT_ROOM;
 	ret = channel_alloc_buffer(si_ic(si), wait);
 	if (!ret)
 		si_cant_put(si);