diff --git a/src/flt_spoe.c b/src/flt_spoe.c
index 58a7e79..2de26b4 100644
--- a/src/flt_spoe.c
+++ b/src/flt_spoe.c
@@ -1983,7 +1983,7 @@
 	if (!sess)
 		goto out_free_spoe;
 
-	if ((strm = stream_new(sess, &appctx->obj_type)) == NULL)
+	if ((strm = stream_new(sess, &appctx->obj_type, &BUF_NULL)) == NULL)
 		goto out_free_sess;
 
 	stream_set_backend(strm, conf->agent->b.be);
diff --git a/src/hlua.c b/src/hlua.c
index fbccaaa..b613825 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -2843,7 +2843,7 @@
 		goto out_fail_sess;
 	}
 
-	strm = stream_new(sess, &appctx->obj_type);
+	strm = stream_new(sess, &appctx->obj_type, &BUF_NULL);
 	if (!strm) {
 		hlua_pusherror(L, "socket: out of memory");
 		goto out_fail_stream;
diff --git a/src/mux_h1.c b/src/mux_h1.c
index fc4fde7..e2c9693 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -508,7 +508,7 @@
 	return b_data(&h1s->h1c->ibuf);
 }
 
-static struct conn_stream *h1s_new_cs(struct h1s *h1s)
+static struct conn_stream *h1s_new_cs(struct h1s *h1s, struct buffer *input)
 {
 	struct conn_stream *cs;
 
@@ -529,10 +529,11 @@
 		cs->flags |= CS_FL_MAY_SPLICE;
 	}
 
-	if (stream_create_from_cs(cs) < 0) {
+	if (stream_create_from_cs(cs, input) < 0) {
 		TRACE_DEVEL("leaving on stream creation failure", H1_EV_STRM_NEW|H1_EV_STRM_END|H1_EV_STRM_ERR, h1s->h1c->conn, h1s);
 		goto err;
 	}
+	*input = BUF_NULL;
 
 	TRACE_LEAVE(H1_EV_STRM_NEW, h1s->h1c->conn, h1s);
 	return cs;
@@ -597,7 +598,7 @@
 		h1s->cs = cs;
 	}
 	else {
-		cs = h1s_new_cs(h1s);
+		cs = h1s_new_cs(h1s, &BUF_NULL);
 		if (!cs)
 			goto fail;
 	}
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 741708d..75874a3 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -1483,7 +1483,7 @@
 	cs->ctx = h2s;
 	h2c->nb_cs++;
 
-	if (stream_create_from_cs(cs) < 0)
+	if (stream_create_from_cs(cs, &BUF_NULL) < 0)
 		goto out_free_cs;
 
 	/* We want the accept date presented to the next stream to be the one
diff --git a/src/mux_pt.c b/src/mux_pt.c
index 57c1b9e..3161d16 100644
--- a/src/mux_pt.c
+++ b/src/mux_pt.c
@@ -112,7 +112,7 @@
 		if (!cs)
 			goto fail_free_ctx;
 
-		if (stream_create_from_cs(cs) < 0)
+		if (stream_create_from_cs(cs, &BUF_NULL) < 0)
 			goto fail_free;
 
 	}
diff --git a/src/peers.c b/src/peers.c
index abc2c59..b5c1d42 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -2675,7 +2675,7 @@
 		goto out_free_appctx;
 	}
 
-	if ((s = stream_new(sess, &appctx->obj_type)) == NULL) {
+	if ((s = stream_new(sess, &appctx->obj_type, &BUF_NULL)) == NULL) {
 		ha_alert("Failed to initialize stream in peer_session_create().\n");
 		goto out_free_sess;
 	}
diff --git a/src/sink.c b/src/sink.c
index a7f6897..35bf770 100644
--- a/src/sink.c
+++ b/src/sink.c
@@ -640,7 +640,7 @@
 		goto out_free_appctx;
 	}
 
-	if ((s = stream_new(sess, &appctx->obj_type)) == NULL) {
+	if ((s = stream_new(sess, &appctx->obj_type, &BUF_NULL)) == NULL) {
 		ha_alert("Failed to initialize stream in peer_session_create().\n");
 		goto out_free_sess;
 	}
diff --git a/src/stream.c b/src/stream.c
index abef210..0ca54af 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -269,11 +269,11 @@
  * valid right after the handshake, before the connection's data layer is
  * initialized, because it relies on the session to be in conn->owner.
  */
-int stream_create_from_cs(struct conn_stream *cs)
+int stream_create_from_cs(struct conn_stream *cs, struct buffer *input)
 {
 	struct stream *strm;
 
-	strm = stream_new(cs->conn->owner, &cs->obj_type);
+	strm = stream_new(cs->conn->owner, &cs->obj_type, input);
 	if (strm == NULL)
 		return -1;
 
@@ -313,9 +313,11 @@
  * end point is assigned to <origin>, which must be valid. The stream's task
  * is configured with a nice value inherited from the listener's nice if any.
  * The task's context is set to the new stream, and its function is set to
- * process_stream(). Target and analysers are null.
+ * process_stream(). Target and analysers are null. <input> is always used as
+ * Input buffer and may contain data. It is the caller responsibility to not
+ * reuse it anymore. <input> may point on BUF_NULL.
  */
-struct stream *stream_new(struct session *sess, enum obj_type *origin)
+struct stream *stream_new(struct session *sess, enum obj_type *origin, struct buffer *input)
 {
 	struct stream *s;
 	struct task *t;
@@ -405,8 +407,6 @@
 	 * when the default backend is assigned.
 	 */
 	s->be  = sess->fe;
-	s->req.buf = BUF_NULL;
-	s->res.buf = BUF_NULL;
 	s->req_cap = NULL;
 	s->res_cap = NULL;
 
@@ -462,7 +462,7 @@
 	/* init store persistence */
 	s->store_count = 0;
 
-	channel_init(&s->req);
+	channel_init(&s->req, input);
 	s->req.flags |= CF_READ_ATTACHED; /* the producer is already connected */
 	s->req.analysers = sess->listener ? sess->listener->analysers : 0;
 
@@ -477,7 +477,7 @@
 	s->req.wex = TICK_ETERNITY;
 	s->req.analyse_exp = TICK_ETERNITY;
 
-	channel_init(&s->res);
+	channel_init(&s->res, &BUF_NULL);
 	s->res.flags |= CF_ISRESP;
 	s->res.analysers = 0;
 
