diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 5e2d74f..24072a6 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -39,6 +39,7 @@
 void stream_int_update_conn(struct stream_interface *si);
 int stream_int_shutr(struct stream_interface *si);
 int stream_int_shutw(struct stream_interface *si);
+void stream_int_chk_rcv_conn(struct stream_interface *si);
 
 extern struct sock_ops stream_int_embedded;
 extern struct sock_ops stream_int_task;
diff --git a/src/sock_raw.c b/src/sock_raw.c
index 6a3a256..c426e99 100644
--- a/src/sock_raw.c
+++ b/src/sock_raw.c
@@ -46,7 +46,6 @@
 static void sock_raw_read(struct connection *conn);
 static void sock_raw_write(struct connection *conn);
 static void sock_raw_read0(struct stream_interface *si);
-static void sock_raw_chk_rcv(struct stream_interface *si);
 static void sock_raw_chk_snd(struct stream_interface *si);
 
 
@@ -674,40 +673,6 @@
 }
 
 /* This function is used for inter-stream-interface calls. It is called by the
- * consumer to inform the producer side that it may be interested in checking
- * for free space in the buffer. Note that it intentionally does not update
- * timeouts, so that we can still check them later at wake-up.
- */
-static void sock_raw_chk_rcv(struct stream_interface *si)
-{
-	struct buffer *ib = si->ib;
-
-	DPRINTF(stderr,"[%u] %s: fd=%d owner=%p ib=%p, ob=%p, exp(r,w)=%u,%u ibf=%08x obf=%08x ibh=%d ibt=%d obh=%d obd=%d si=%d\n",
-		now_ms, __FUNCTION__,
-		si_fd(si), fdtab[si_fd(si)].owner,
-		ib, si->ob,
-		ib->rex, si->ob->wex,
-		ib->flags, si->ob->flags,
-		ib->i, ib->o, si->ob->i, si->ob->o, si->state);
-
-	if (unlikely(si->state != SI_ST_EST || (ib->flags & BF_SHUTR)))
-		return;
-
-	if (ib->flags & (BF_FULL|BF_HIJACK|BF_DONT_READ)) {
-		/* stop reading */
-		if ((ib->flags & (BF_FULL|BF_HIJACK|BF_DONT_READ)) == BF_FULL)
-			si->flags |= SI_FL_WAIT_ROOM;
-		conn_data_stop_recv(&si->conn);
-	}
-	else {
-		/* (re)start reading */
-		si->flags &= ~SI_FL_WAIT_ROOM;
-		conn_data_want_recv(&si->conn);
-	}
-}
-
-
-/* This function is used for inter-stream-interface calls. It is called by the
  * producer to inform the consumer side that it may be interested in checking
  * for data in the buffer. Note that it intentionally does not update timeouts,
  * so that we can still check them later at wake-up.
@@ -811,7 +776,7 @@
 	.update  = stream_int_update_conn,
 	.shutr   = NULL,
 	.shutw   = NULL,
-	.chk_rcv = sock_raw_chk_rcv,
+	.chk_rcv = stream_int_chk_rcv_conn,
 	.chk_snd = sock_raw_chk_snd,
 	.read    = sock_raw_read,
 	.write   = sock_raw_write,
diff --git a/src/stream_interface.c b/src/stream_interface.c
index e3816e4..6a46df4 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -734,6 +734,38 @@
 	}
 }
 
+/* This function is used for inter-stream-interface calls. It is called by the
+ * consumer to inform the producer side that it may be interested in checking
+ * for free space in the buffer. Note that it intentionally does not update
+ * timeouts, so that we can still check them later at wake-up. This function is
+ * dedicated to connection-based stream interfaces.
+ */
+void stream_int_chk_rcv_conn(struct stream_interface *si)
+{
+	struct buffer *ib = si->ib;
+
+	if (unlikely(si->state != SI_ST_EST || (ib->flags & BF_SHUTR)))
+		return;
+
+	if (si->conn.flags & CO_FL_HANDSHAKE) {
+		/* a handshake is in progress */
+		return;
+	}
+
+	if (ib->flags & (BF_FULL|BF_HIJACK|BF_DONT_READ)) {
+		/* stop reading */
+		if ((ib->flags & (BF_FULL|BF_HIJACK|BF_DONT_READ)) == BF_FULL)
+			si->flags |= SI_FL_WAIT_ROOM;
+		conn_data_stop_recv(&si->conn);
+	}
+	else {
+		/* (re)start reading */
+		si->flags &= ~SI_FL_WAIT_ROOM;
+		conn_data_want_recv(&si->conn);
+	}
+}
+
+
 /*
  * Local variables:
  *  c-indent-level: 8
