MINOR: stream-int: use si_cant_put() instead of setting SI_FL_WAIT_ROOM

We now do this on the si_cs_recv() path so that we always have
SI_FL_WANT_PUT properly set when there's a need to receive and
SI_FL_WAIT_ROOM upon failure.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index c320784..c2c5310 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -330,7 +330,7 @@
 	si->flags &= ~SI_FL_WAIT_ROOM;
 	ret = channel_alloc_buffer(si_ic(si), wait);
 	if (!ret)
-		si->flags |= SI_FL_WAIT_ROOM;
+		si_cant_put(si);
 	return ret;
 }
 
diff --git a/src/stream_interface.c b/src/stream_interface.c
index f2fa791..7eb9e9c 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -756,7 +756,7 @@
 			/* stop reading */
 			if (!(si->flags & SI_FL_WAIT_ROOM)) {
 				if (!(ic->flags & CF_DONT_READ)) /* full */
-					si->flags |= SI_FL_WAIT_ROOM;
+					si_cant_put(si);
 				ic->rex = TICK_ETERNITY;
 			}
 		}
@@ -1098,6 +1098,9 @@
 	if (si->wait_event.wait_reason & SUB_CAN_RECV)
 		return 0;
 
+	/* by default nothing to deliver */
+	si_stop_put(si);
+
 	/* maybe we were called immediately after an asynchronous shutr */
 	if (ic->flags & CF_SHUTR)
 		return 1;
@@ -1165,7 +1168,7 @@
 			/* the pipe is full or we have read enough data that it
 			 * could soon be full. Let's stop before needing to poll.
 			 */
-			si->flags |= SI_FL_WAIT_ROOM;
+			si_cant_put(si);
 		}
 
 		/* splice not possible (anymore), let's go on on standard copy */
@@ -1191,13 +1194,13 @@
 		max = channel_recv_max(ic);
 
 		if (!max) {
-			si->flags |= SI_FL_WAIT_ROOM;
+			si_cant_put(si);
 			break;
 		}
 
 		ret = cs->conn->mux->rcv_buf(cs, &ic->buf, max, co_data(ic) ? CO_RFL_BUF_WET : 0);
 		if (cs->flags & CS_FL_RCV_MORE)
-			si->flags |= SI_FL_WAIT_ROOM;
+			si_cant_put(si);
 
 		if (ret <= 0)
 			break;
@@ -1219,7 +1222,7 @@
 		ic->total += ret;
 
 		if (!channel_may_recv(ic)) {
-			si->flags |= SI_FL_WAIT_ROOM;
+			si_cant_put(si);
 			break;
 		}