diff --git a/src/stream.c b/src/stream.c
index 200556f..8df5c75 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -1670,12 +1670,20 @@
 	/* First, attempd to do I/Os */
 	cs = objt_cs(si_f->end);
 	if (cs) {
-		si_cs_send(cs);
-		si_cs_recv(cs);
+		if (!(si_f->wait_event.wait_reason & SUB_CAN_SEND) &&
+		    co_data(si_oc(si_f)))
+			si_cs_send(cs);
+		if (!(si_f->wait_event.wait_reason & SUB_CAN_RECV) &&
+		    !(si_f->flags & SI_FL_WAIT_ROOM))
+			si_cs_recv(cs);
 	}
 	cs = objt_cs(si_b->end);
 	if (cs) {
-		si_cs_send(cs);
+		if (!(si_b->wait_event.wait_reason & SUB_CAN_SEND) &&
+		    co_data(si_oc(si_b)))
+			si_cs_send(cs);
+		if (!(si_b->wait_event.wait_reason & SUB_CAN_RECV) &&
+		    !(si_b->flags & SI_FL_WAIT_ROOM))
 		si_cs_recv(cs);
 	}
 redo:
@@ -2447,11 +2455,17 @@
 		cs = objt_cs(si_f->end);
 		ret = 0;
 		if (cs && !(cs->conn->flags & CO_FL_ERROR) &&
-		    !(cs->flags & CS_FL_ERROR) && !(si_oc(si_f)->flags & CF_SHUTW))
+		    !(cs->flags & CS_FL_ERROR) &&
+		    !(si_oc(si_f)->flags & CF_SHUTW) &&
+		    !(si_f->wait_event.wait_reason & SUB_CAN_SEND) &&
+		    co_data(si_oc(si_f)))
 			ret = si_cs_send(cs);
 		cs = objt_cs(si_b->end);
 		if (cs && !(cs->conn->flags & CO_FL_ERROR) &&
-		    !(cs->flags & CS_FL_ERROR) && !(si_oc(si_b)->flags & CF_SHUTW))
+		    !(cs->flags & CS_FL_ERROR) &&
+		    !(si_oc(si_b)->flags & CF_SHUTW) &&
+		    !(si_b->wait_event.wait_reason & SUB_CAN_SEND) &&
+		    co_data(si_oc(si_b)))
 			ret |= si_cs_send(cs);
 
 		if (ret)
diff --git a/src/stream_interface.c b/src/stream_interface.c
index 8057d27..04eedf2 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -726,7 +726,7 @@
 	if (!cs)
 		return NULL;
 redo:
-	if (!(si->wait_event.wait_reason & SUB_CAN_SEND))
+	if (!(si->wait_event.wait_reason & SUB_CAN_SEND) && co_data(si_oc(si)))
 		ret = si_cs_send(cs);
 	if (!(si->wait_event.wait_reason & SUB_CAN_RECV))
 		ret |= si_cs_recv(cs);
@@ -978,7 +978,8 @@
 	    !(si->flags & SI_FL_WAIT_DATA))       /* not waiting for data */
 		return;
 
-	si_cs_send(cs);
+	if (!(si->wait_event.wait_reason & SUB_CAN_SEND) && co_data(si_oc(si)))
+		si_cs_send(cs);
 	tasklet_wakeup(si->wait_event.task);
 	if (cs->flags & CS_FL_ERROR || cs->conn->flags & CO_FL_ERROR) {
 		/* Write error on the file descriptor */
