MEDIUM: stream-int: temporarily make si_chk_rcv() take care of SI_FL_WAIT_ROOM

This flag should already be cleared before calling the *chk_rcv() functions.
Before adapting all call places, let's first make sure si_chk_rcv() clears
it before calling them so that these functions do not have to check it again
and so that they do not adjust it. This function will only call the lower
layers if the SI_FL_WANT_PUT flag is present so that the endpoint can decide
not to be called (as done with applets).
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 7bab7ff..a687b2a 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -385,9 +385,17 @@
 		si->ops->update(si);
 }
 
-/* Calls chk_rcv on the connection using the data layer */
+/* This is to be used after making some room available in a channel. It will
+ * clear SI_FL_WAIT_ROOM, then if SI_FL_WANT_PUT is set, will calls ->chk_rcv()
+ * to enable receipt of new data.
+ */
 static inline void si_chk_rcv(struct stream_interface *si)
 {
+	si->flags &= ~SI_FL_WAIT_ROOM;
+
+	if (!(si->flags & SI_FL_WANT_PUT))
+		return;
+
 	si->ops->chk_rcv(si);
 }