diff --git a/include/proto/channel.h b/include/proto/channel.h
index db179ca..42bba15 100644
--- a/include/proto/channel.h
+++ b/include/proto/channel.h
@@ -334,12 +334,11 @@
 	return ret;
 }
 
-/* Cut the "tail" of the channel's buffer, which means strip it to the length
- * of unsent data only, and kill any remaining unsent data. Any scheduled
- * forwarding is stopped. This is mainly to be used to send error messages
- * after existing data.
+/* Truncate any unread data in the channel's buffer, and disable forwarding.
+ * Outgoing data are left intact. This is mainly to be used to send error
+ * messages after existing data.
  */
-static inline void bi_erase(struct channel *chn)
+static inline void channel_truncate(struct channel *chn)
 {
 	if (!chn->buf->o)
 		return channel_erase(chn);
diff --git a/src/proto_http.c b/src/proto_http.c
index e14b1d6..6d94b69 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -5233,7 +5233,7 @@
 	if (txn->rsp.msg_state == HTTP_MSG_CLOSED) {
 	http_msg_closed:
 		/* drop any pending data */
-		bi_erase(chn);
+		channel_truncate(chn);
 		channel_auto_close(chn);
 		channel_auto_read(chn);
 		goto wait_other_side;
@@ -5300,7 +5300,7 @@
 		channel_abort(s->req);
 		channel_auto_close(s->req);
 		channel_auto_read(s->req);
-		bi_erase(s->req);
+		channel_truncate(s->req);
 	}
 	else if ((txn->req.msg_state == HTTP_MSG_DONE ||
 		  txn->req.msg_state == HTTP_MSG_CLOSED) &&
@@ -5745,7 +5745,7 @@
 			rep->analysers = 0;
 			txn->status = 502;
 			rep->prod->flags |= SI_FL_NOLINGER;
-			bi_erase(rep);
+			channel_truncate(rep);
 			stream_int_retnclose(rep->cons, http_error_message(s, HTTP_ERR_502));
 
 			if (!(s->flags & SN_ERR_MASK))
@@ -5780,7 +5780,7 @@
 			rep->analysers = 0;
 			txn->status = 502;
 			rep->prod->flags |= SI_FL_NOLINGER;
-			bi_erase(rep);
+			channel_truncate(rep);
 			stream_int_retnclose(rep->cons, http_error_message(s, HTTP_ERR_502));
 
 			if (!(s->flags & SN_ERR_MASK))
@@ -5807,7 +5807,7 @@
 			rep->analysers = 0;
 			txn->status = 504;
 			rep->prod->flags |= SI_FL_NOLINGER;
-			bi_erase(rep);
+			channel_truncate(rep);
 			stream_int_retnclose(rep->cons, http_error_message(s, HTTP_ERR_504));
 
 			if (!(s->flags & SN_ERR_MASK))
@@ -5828,7 +5828,7 @@
 			channel_auto_close(rep);
 
 			txn->status = 400;
-			bi_erase(rep);
+			channel_truncate(rep);
 			stream_int_retnclose(rep->cons, http_error_message(s, HTTP_ERR_400));
 
 			if (!(s->flags & SN_ERR_MASK))
@@ -5857,7 +5857,7 @@
 			rep->analysers = 0;
 			txn->status = 502;
 			rep->prod->flags |= SI_FL_NOLINGER;
-			bi_erase(rep);
+			channel_truncate(rep);
 			stream_int_retnclose(rep->cons, http_error_message(s, HTTP_ERR_502));
 
 			if (!(s->flags & SN_ERR_MASK))
@@ -6189,7 +6189,7 @@
 	s->logs.logwait = 0;
 	s->logs.level = 0;
 	s->rep->flags &= ~CF_EXPECT_MORE; /* speed up sending a previous response */
-	bi_erase(rep);
+	channel_truncate(rep);
 	stream_int_retnclose(rep->cons, NULL);
 	return 0;
 }
@@ -6260,7 +6260,7 @@
 				txn->status = 502;
 				s->logs.t_data = -1; /* was not a valid response */
 				rep->prod->flags |= SI_FL_NOLINGER;
-				bi_erase(rep);
+				channel_truncate(rep);
 				stream_int_retnclose(rep->cons, http_error_message(s, HTTP_ERR_502));
 				if (!(s->flags & SN_ERR_MASK))
 					s->flags |= SN_ERR_PRXCOND;
diff --git a/src/stream_interface.c b/src/stream_interface.c
index f05f4a8..9025851 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -125,8 +125,8 @@
 	channel_abort(si->ib);
 	channel_auto_close(si->ib);
 	channel_erase(si->ib);
+	channel_truncate(si->ob);
 
-	bi_erase(si->ob);
 	if (likely(msg && msg->len))
 		bo_inject(si->ob, msg->str, msg->len);
 
