MINOR: stream-int: replace si_cant_put() with si_rx_room_{blk,rdy}()

Remaining calls to si_cant_put() were all for lack of room and were
turned to si_rx_room_blk(). A few places where SI_FL_RXBLK_ROOM was
cleared by hand were converted to si_rx_room_rdy().

The now unused si_cant_put() function was removed.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index d1c022c..90e3956 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -259,13 +259,6 @@
 	return !(si->flags & SI_FL_RX_WAIT_EP);
 }
 
-/* Report that a stream interface failed to put some data into the input buffer */
-static inline void si_cant_put(struct stream_interface *si)
-{
-	si->flags |=  SI_FL_RXBLK_ROOM;
-	si->flags &= ~SI_FL_RX_WAIT_EP;
-}
-
 /* The stream interface announces it is ready to try to deliver more data to the input buffer */
 static inline void si_rx_endp_more(struct stream_interface *si)
 {
@@ -306,6 +299,22 @@
 	si->flags |=  SI_FL_RXBLK_BUFF;
 }
 
+/* Tell a stream interface some room was made in the input buffer */
+static inline void si_rx_room_rdy(struct stream_interface *si)
+{
+	si->flags &= ~SI_FL_RXBLK_ROOM;
+}
+
+/* The stream interface announces it failed to put data into the input buffer
+ * by lack of room. Since it indicates a willingness to deliver data to the
+ * buffer that will have to be retried, we automatically clear RXBLK_ENDP to
+ * be called again as soon as RXBLK_ROOM is cleared.
+ */
+static inline void si_rx_room_blk(struct stream_interface *si)
+{
+	si->flags |=  SI_FL_RXBLK_ROOM;
+}
+
 /* The stream interface announces it will never put new data into the input
  * buffer and that it's not waiting for its endpoint to deliver anything else.
  * This function obviously doesn't have a _rdy equivalent.
diff --git a/src/cache.c b/src/cache.c
index fdb0f25..9b77121 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -617,7 +617,7 @@
 			offset = 0;
 		if (ret <= 0) {
 			if (ret == -3 || ret == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				break;
 			}
 			return -1;
@@ -1142,7 +1142,7 @@
 		if (!next_key) {
 			chunk_printf(&trash, "%p: %s (shctx:%p, available blocks:%d)\n", cache, cache->id, shctx_ptr(cache), shctx_ptr(cache)->nbav);
 			if (ci_putchk(si_ic(si), &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
@@ -1168,7 +1168,7 @@
 			shctx_unlock(shctx_ptr(cache));
 
 			if (ci_putchk(si_ic(si), &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
diff --git a/src/cli.c b/src/cli.c
index 6329db1..199d25f 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -590,7 +590,7 @@
 			 * would want to return some info right after parsing.
 			 */
 			if (buffer_almost_full(si_ib(si))) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				break;
 			}
 
@@ -693,7 +693,7 @@
 							cli_get_severity_output(appctx)) != -1)
 					appctx->st0 = CLI_ST_PROMPT;
 				else
-					si_cant_put(si);
+					si_rx_room_blk(si);
 				break;
 			case CLI_ST_PRINT_FREE: {
 				const char *msg = appctx->ctx.cli.err;
@@ -706,7 +706,7 @@
 					appctx->st0 = CLI_ST_PROMPT;
 				}
 				else
-					si_cant_put(si);
+					si_rx_room_blk(si);
 				break;
 			}
 			case CLI_ST_CALLBACK: /* use custom pointer */
@@ -746,7 +746,7 @@
 				if (ci_putstr(si_ic(si), prompt) != -1)
 					appctx->st0 = CLI_ST_GETREQ;
 				else
-					si_cant_put(si);
+					si_rx_room_blk(si);
 			}
 
 			/* If the output functions are still there, it means they require more room. */
@@ -834,7 +834,7 @@
 		chunk_printf(&trash, "%s\n", *var);
 
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 		if (appctx->st2 == STAT_ST_END)
@@ -951,7 +951,7 @@
 		chunk_appendf(&trash, "\n");
 
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 	skip:
@@ -1008,7 +1008,7 @@
 	if (ci_putchk(si_ic(si), &trash) == -1) {
 		chunk_reset(&trash);
 		chunk_printf(&trash, "[output too large, cannot dump]\n");
-		si_cant_put(si);
+		si_rx_room_blk(si);
 	}
 
 	/* dump complete */
@@ -1030,7 +1030,7 @@
 		case STAT_ST_INIT:
 			chunk_printf(&trash, "# socket lvl processes\n");
 			if (ci_putchk(si_ic(si), &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 			appctx->st2 = STAT_ST_LIST;
@@ -1099,7 +1099,7 @@
 						}
 
 						if (ci_putchk(si_ic(si), &trash) == -1) {
-							si_cant_put(si);
+							si_rx_room_blk(si);
 							return 0;
 						}
 					}
@@ -1413,7 +1413,7 @@
 	}
 
 	if (ci_putchk(si_ic(si), &trash) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 
diff --git a/src/dns.c b/src/dns.c
index 4ceda4d..57bec21 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -2030,7 +2030,7 @@
 			/* let's try again later from this session. We add ourselves into
 			 * this session's users so that it can remove us upon termination.
 			 */
-			si->flags |= SI_FL_RXBLK_ROOM;
+			si_rx_room_blk(si);
 			return 0;
 		}
 		/* fall through */
diff --git a/src/flt_spoe.c b/src/flt_spoe.c
index edb853a..72e1773 100644
--- a/src/flt_spoe.c
+++ b/src/flt_spoe.c
@@ -1156,7 +1156,7 @@
 	ret = ci_putblk(si_ic(si), buf, framesz+4);
 	if (ret <= 0) {
 		if ((ret == -3 && b_is_null(&si_ic(si)->buf)) || ret == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 1; /* retry */
 		}
 		SPOE_APPCTX(appctx)->status_code = SPOE_FRM_ERR_IO;
diff --git a/src/hlua.c b/src/hlua.c
index f7d2718..2364317 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -3833,7 +3833,7 @@
 	 * applet, and returns a yield.
 	 */
 	if (l < len) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_applet_tcp_send_yield, TICK_ETERNITY, 0));
 	}
 
@@ -4130,7 +4130,7 @@
 		 * If ret is -1, we dont have room in the buffer, so we yield.
 		 */
 		if (ret == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_applet_http_getline_yield, TICK_ETERNITY, 0));
 		}
 		appctx->appctx->ctx.hlua_apphttp.flags &= ~APPLET_100C;
@@ -4216,7 +4216,7 @@
 		 * If ret is -1, we dont have room in the buffer, so we yield.
 		 */
 		if (ret == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_applet_http_recv_yield, TICK_ETERNITY, 0));
 		}
 		appctx->appctx->ctx.hlua_apphttp.flags &= ~APPLET_100C;
@@ -4328,7 +4328,7 @@
 	 * applet, and returns a yield.
 	 */
 	if (l < len) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_applet_http_send_yield, TICK_ETERNITY, 0));
 	}
 
@@ -4468,7 +4468,7 @@
 
 	/* If ret is -1, we dont have room in the buffer, so we yield. */
 	if (ret == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_applet_http_start_response_yield, TICK_ETERNITY, 0));
 	}
 
@@ -6775,7 +6775,7 @@
 
 			/* no enough space error. */
 			if (ret == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return;
 			}
 
@@ -7224,7 +7224,7 @@
 	case HLUA_E_AGAIN:
 		/* We want write. */
 		if (HLUA_IS_WAKERESWR(hlua))
-			si_cant_put(si);
+			si_rx_room_blk(si);
 		/* Set the timeout. */
 		if (hlua->wake_time != TICK_ETERNITY)
 			task_schedule(hlua->task, hlua->wake_time);
diff --git a/src/log.c b/src/log.c
index 8962194..b6f99bc 100644
--- a/src/log.c
+++ b/src/log.c
@@ -2778,7 +2778,7 @@
 	const char *msg = (startup_logs ? startup_logs : "No startup alerts/warnings.\n");
 
 	if (ci_putstr(si_ic(si), msg) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 	return 1;
diff --git a/src/map.c b/src/map.c
index 859ad89..7eb9e36 100644
--- a/src/map.c
+++ b/src/map.c
@@ -381,7 +381,7 @@
 				 */
 				LIST_ADDQ(&elt->back_refs, &appctx->ctx.map.bref.users);
 				HA_SPIN_UNLOCK(PATREF_LOCK, &appctx->ctx.map.ref->lock);
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 
@@ -410,7 +410,7 @@
 		chunk_reset(&trash);
 		chunk_appendf(&trash, "# id (file) description\n");
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 
@@ -440,7 +440,7 @@
 				/* let's try again later from this stream. We add ourselves into
 				 * this stream's users so that it can remove us upon termination.
 				 */
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 
@@ -561,7 +561,7 @@
 				 * this stream's users so that it can remove us upon termination.
 				 */
 				HA_SPIN_UNLOCK(PATREF_LOCK, &appctx->ctx.map.ref->lock);
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 
diff --git a/src/memory.c b/src/memory.c
index ced9af5..17ac1d1 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -514,7 +514,7 @@
 
 	dump_pools_to_trash();
 	if (ci_putchk(si_ic(si), &trash) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 	return 1;
diff --git a/src/peers.c b/src/peers.c
index 649af83..76ecf68 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -1892,7 +1892,7 @@
 		HA_SPIN_UNLOCK(PEER_LOCK, &curpeer->lock);
 	return;
 full:
-	si_cant_put(si);
+	si_rx_room_blk(si);
 	goto out;
 }
 
diff --git a/src/proxy.c b/src/proxy.c
index 763b95d..d0b06d8 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -1581,7 +1581,7 @@
 				bk_f_forced_id, srv_f_forced_id, srv->hostname ? srv->hostname : "-", srv->svc_port,
 				srvrecord ? srvrecord : "-");
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 	}
@@ -1608,7 +1608,7 @@
 	if (appctx->st2 == STAT_ST_HEAD) {
 		chunk_printf(&trash, "%d\n# %s\n", SRV_STATE_FILE_VERSION, SRV_STATE_FILE_FIELD_NAMES);
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 		appctx->st2 = STAT_ST_INFO;
@@ -1643,7 +1643,7 @@
 	if (!appctx->ctx.cli.p0) {
 		chunk_printf(&trash, "# name\n");
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 		appctx->ctx.cli.p0 = proxies_list;
@@ -1662,7 +1662,7 @@
 
 		chunk_appendf(&trash, "%s\n", curproxy->id);
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 	}
@@ -2155,7 +2155,7 @@
  cant_send_unlock:
 	HA_SPIN_UNLOCK(PROXY_LOCK, &appctx->ctx.errors.px->lock);
  cant_send:
-	si_cant_put(si);
+	si_rx_room_blk(si);
 	return 0;
 }
 
diff --git a/src/server.c b/src/server.c
index 47eaee6..5a539ef 100644
--- a/src/server.c
+++ b/src/server.c
@@ -4460,7 +4460,7 @@
 	snprintf(trash.area, trash.size, "%d (initial %d)\n", sv->uweight,
 		 sv->iweight);
 	if (ci_putstr(si_ic(si), trash.area) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 	return 1;
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index 39d599c..5b68ece 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -8571,7 +8571,7 @@
 			chunk_appendf(&trash, "# id (file)\n");
 
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 
@@ -8620,7 +8620,7 @@
 						 * this stream's users so that it can remove us upon termination.
 						 */
 						HA_RWLOCK_RDUNLOCK(TLSKEYS_REF_LOCK, &ref->lock);
-						si_cant_put(si);
+						si_rx_room_blk(si);
 						return 0;
 					}
 					appctx->ctx.cli.i1++;
@@ -8632,7 +8632,7 @@
 				/* let's try again later from this stream. We add ourselves into
 				 * this stream's users so that it can remove us upon termination.
 				 */
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 
diff --git a/src/stats.c b/src/stats.c
index 31c4f85..ec61c09 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -2034,7 +2034,7 @@
 		if (appctx->ctx.stats.flags & STAT_FMT_HTML) {
 			stats_dump_html_px_hdr(si, px, uri);
 			if (ci_putchk(rep, &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
@@ -2046,7 +2046,7 @@
 		/* print the frontend */
 		if (stats_dump_fe_stats(si, px)) {
 			if (ci_putchk(rep, &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
@@ -2059,7 +2059,7 @@
 		/* stats.l has been initialized above */
 		for (; appctx->ctx.stats.l != &px->conf.listeners; appctx->ctx.stats.l = l->by_fe.n) {
 			if (buffer_almost_full(&rep->buf)) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 
@@ -2078,7 +2078,7 @@
 			/* print the frontend */
 			if (stats_dump_li_stats(si, px, l, flags)) {
 				if (ci_putchk(rep, &trash) == -1) {
-					si_cant_put(si);
+					si_rx_room_blk(si);
 					return 0;
 				}
 			}
@@ -2092,7 +2092,7 @@
 		/* stats.sv has been initialized above */
 		for (; appctx->ctx.stats.sv != NULL; appctx->ctx.stats.sv = sv->next) {
 			if (buffer_almost_full(&rep->buf)) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 
@@ -2122,7 +2122,7 @@
 
 			if (stats_dump_sv_stats(si, px, flags, sv)) {
 				if (ci_putchk(rep, &trash) == -1) {
-					si_cant_put(si);
+					si_rx_room_blk(si);
 					return 0;
 				}
 			}
@@ -2135,7 +2135,7 @@
 		/* print the backend */
 		if (stats_dump_be_stats(si, px, flags)) {
 			if (ci_putchk(rep, &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
@@ -2147,7 +2147,7 @@
 		if (appctx->ctx.stats.flags & STAT_FMT_HTML) {
 			stats_dump_html_px_end(si, px);
 			if (ci_putchk(rep, &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
@@ -2559,7 +2559,7 @@
 			stats_dump_csv_header();
 
 		if (ci_putchk(rep, &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 
@@ -2570,7 +2570,7 @@
 		if (appctx->ctx.stats.flags & STAT_FMT_HTML) {
 			stats_dump_html_info(si, uri);
 			if (ci_putchk(rep, &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
@@ -2584,7 +2584,7 @@
 		/* dump proxies */
 		while (appctx->ctx.stats.px) {
 			if (buffer_almost_full(&rep->buf)) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 
@@ -2609,7 +2609,7 @@
 			else
 				stats_dump_json_end();
 			if (ci_putchk(rep, &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				return 0;
 			}
 		}
@@ -2979,7 +2979,7 @@
 		chunk_appendf(&trash, "\r\n");
 
 	if (ci_putchk(si_ic(si), &trash) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 
@@ -3024,7 +3024,7 @@
 		     scope_txt);
 
 	if (ci_putchk(si_ic(si), &trash) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 
@@ -3085,7 +3085,7 @@
 			si_ic(si)->to_forward = 0;
 			chunk_printf(&trash, "\r\n000000\r\n");
 			if (ci_putchk(si_ic(si), &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				si_ic(si)->to_forward = last_fwd;
 				goto out;
 			}
@@ -3111,7 +3111,7 @@
 			if (last_len != data_len) {
 				chunk_printf(&trash, "\r\n%06x\r\n", (last_len - data_len));
 				if (ci_putchk(si_ic(si), &trash) == -1)
-					si_cant_put(si);
+					si_rx_room_blk(si);
 
 				si_ic(si)->total += (last_len - data_len);
 				b_add(si_ib(si), last_len - data_len);
@@ -3137,7 +3137,7 @@
 		if (appctx->ctx.stats.flags & STAT_CHUNKED) {
 			chunk_printf(&trash, "\r\n0\r\n\r\n");
 			if (ci_putchk(si_ic(si), &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				goto out;
 			}
 		}
@@ -3333,7 +3333,7 @@
 		stats_dump_info_fields(&trash, info);
 
 	if (ci_putchk(si_ic(si), &trash) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 
@@ -3561,7 +3561,7 @@
 	stats_dump_json_schema(&trash);
 
 	if (ci_putchk(si_ic(si), &trash) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 
diff --git a/src/stick_table.c b/src/stick_table.c
index 5e55b7a..593b989 100644
--- a/src/stick_table.c
+++ b/src/stick_table.c
@@ -3049,7 +3049,7 @@
 		chunk_appendf(msg, "# contents not dumped due to insufficient privileges\n");
 
 	if (ci_putchk(si_ic(si), msg) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 
@@ -3123,7 +3123,7 @@
 	chunk_appendf(msg, "\n");
 
 	if (ci_putchk(si_ic(si), msg) == -1) {
-		si_cant_put(si);
+		si_rx_room_blk(si);
 		return 0;
 	}
 
diff --git a/src/stream.c b/src/stream.c
index da528b2..f4473e8 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -2782,7 +2782,7 @@
 		/* stream changed, no need to go any further */
 		chunk_appendf(&trash, "  *** session terminated while we were watching it ***\n");
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 		appctx->ctx.sess.uid = 0;
@@ -3080,7 +3080,7 @@
 			     (unsigned int)strm->res.buf.size);
 
 		if (ci_putchk(si_ic(si), &trash) == -1) {
-			si_cant_put(si);
+			si_rx_room_blk(si);
 			return 0;
 		}
 
@@ -3299,7 +3299,7 @@
 				/* let's try again later from this stream. We add ourselves into
 				 * this stream's users so that it can remove us upon termination.
 				 */
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				LIST_ADDQ(&curr_strm->back_refs, &appctx->ctx.sess.bref.users);
 				HA_SPIN_UNLOCK(STRMS_LOCK, &streams_lock);
 				return 0;
@@ -3317,7 +3317,7 @@
 				chunk_appendf(&trash, "Session not found.\n");
 
 			if (ci_putchk(si_ic(si), &trash) == -1) {
-				si_cant_put(si);
+				si_rx_room_blk(si);
 				HA_SPIN_UNLOCK(STRMS_LOCK, &streams_lock);
 				return 0;
 			}
diff --git a/src/stream_interface.c b/src/stream_interface.c
index c349aac..f88b432 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -249,7 +249,7 @@
 
 	if (ic->pipe) {
 		/* stop reading */
-		si->flags |= SI_FL_RXBLK_ROOM;
+		si_rx_room_blk(si);
 	}
 	else {
 		/* (re)start reading */
@@ -482,7 +482,7 @@
 
 	if ((sio->flags & SI_FL_RXBLK_ROOM) &&
 	    ((oc->flags & CF_WRITE_PARTIAL) || channel_is_empty(oc)))
-		sio->flags &= ~SI_FL_RXBLK_ROOM;
+		si_rx_room_rdy(sio);
 
 	if (oc->flags & CF_DONT_READ)
 		si_rx_chan_blk(sio);
@@ -519,7 +519,7 @@
 		 * buffer or in the pipe.
 		 */
 		if (new_len < last_len)
-			si->flags &= ~SI_FL_RXBLK_ROOM;
+			si_rx_room_rdy(si);
 	}
 
 	if (!(ic->flags & CF_DONT_READ))
@@ -761,7 +761,7 @@
 
 		if (!channel_is_empty(ic)) {
 			/* stop reading, imposed by channel's policy or contents */
-			si_cant_put(si);
+			si_rx_room_blk(si);
 		}
 		else {
 			/* (re)start reading and update timeout. Note: we don't recompute the timeout
@@ -769,7 +769,7 @@
 			 * update it if is was not yet set. The stream socket handler will already
 			 * have updated it if there has been a completed I/O.
 			 */
-			si->flags &= ~SI_FL_RXBLK_ROOM;
+			si_rx_room_rdy(si);
 		}
 		if (si->flags & SI_FL_RXBLK_ANY & ~SI_FL_RX_WAIT_EP)
 			ic->rex = TICK_ETERNITY;
@@ -844,7 +844,7 @@
 	    !(cs->flags & CS_FL_ERROR) &&
 	    !(cs->conn->flags & CO_FL_ERROR)) {
 		if (si_cs_send(cs))
-			si_b->flags &= ~SI_FL_RXBLK_ROOM;
+			si_rx_room_rdy(si_b);
 	}
 
 	/* back stream-int */
@@ -856,7 +856,7 @@
 	    !(cs->flags & CS_FL_ERROR) &&
 	    !(cs->conn->flags & CO_FL_ERROR)) {
 		if (si_cs_send(cs))
-			si_f->flags &= ~SI_FL_RXBLK_ROOM;
+			si_rx_room_rdy(si_f);
 	}
 
 	/* let's recompute both sides states */
@@ -1205,7 +1205,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_cant_put(si);
+			si_rx_room_blk(si);
 			goto done_recv;
 		}
 
@@ -1240,7 +1240,7 @@
 
 		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_cant_put(si);
+			si_rx_room_blk(si);
 
 		if (ret <= 0) {
 			break;