diff --git a/include/proto/channel.h b/include/proto/channel.h
index 6d4d3e7..4ba55b9 100644
--- a/include/proto/channel.h
+++ b/include/proto/channel.h
@@ -209,7 +209,6 @@
 	buf->buf.i = 0;
 	buf->to_forward = 0;
 	buf->buf.p = buf->buf.data;
-	buf->flags &= ~BF_FULL;
 }
 
 /* Cut the "tail" of the buffer, which means strip it to the length of unsent
@@ -227,7 +226,6 @@
 		return;
 
 	buf->buf.i = 0;
-	buf->flags &= ~BF_FULL;
 }
 
 /* marks the buffer as "shutdown" ASAP for reads */
@@ -320,9 +318,6 @@
 	if (buffer_len(&buf->buf) == 0)
 		buf->buf.p = buf->buf.data;
 
-	if (!channel_full(buf))
-		buf->flags &= ~BF_FULL;
-
 	/* notify that some data was written to the SI from the buffer */
 	buf->flags |= BF_WRITE_PARTIAL;
 }
@@ -332,8 +327,8 @@
  * closed, -2 is returned. If the block is too large for this buffer, -3 is
  * returned. If there is not enough room left in the buffer, -1 is returned.
  * Otherwise the number of bytes copied is returned (0 being a valid number).
- * Buffer flags FULL, EMPTY and READ_PARTIAL are updated if some data can be
- * transferred. The chunk's length is updated with the number of bytes sent.
+ * Buffer flag READ_PARTIAL is updated if some data can be transferred. The
+ * chunk's length is updated with the number of bytes sent.
  */
 static inline int bi_putchk(struct channel *buf, struct chunk *chunk)
 {
@@ -350,8 +345,7 @@
  * closed, -2 is returned. If the block is too large for this buffer, -3 is
  * returned. If there is not enough room left in the buffer, -1 is returned.
  * Otherwise the number of bytes copied is returned (0 being a valid number).
- * Buffer flags FULL, EMPTY and READ_PARTIAL are updated if some data can be
- * transferred.
+ * Buffer flag READ_PARTIAL is updated if some data can be transferred.
  */
 static inline int bi_putstr(struct channel *buf, const char *str)
 {
diff --git a/include/types/channel.h b/include/types/channel.h
index 67016d1..224d0da 100644
--- a/include/types/channel.h
+++ b/include/types/channel.h
@@ -59,7 +59,7 @@
 #define BF_READ_ERROR     0x000008  /* unrecoverable error on producer side */
 #define BF_READ_ACTIVITY  (BF_READ_NULL|BF_READ_PARTIAL|BF_READ_ERROR)
 
-#define BF_FULL           0x000010  /* channel cannot accept any more data (l >= max len) */
+/* unused: 0x000010 */
 #define BF_SHUTR          0x000020  /* producer has already shut down */
 #define BF_SHUTR_NOW      0x000040  /* the producer must shut down for reads ASAP */
 #define BF_READ_NOEXP     0x000080  /* producer should not expire */
@@ -129,7 +129,7 @@
 #define BF_MASK_ANALYSER        (BF_READ_ATTACHED|BF_READ_ACTIVITY|BF_READ_TIMEOUT|BF_ANA_TIMEOUT|BF_WRITE_ACTIVITY|BF_WAKE_ONCE)
 
 /* Mask for static flags which cause analysers to be woken up when they change */
-#define BF_MASK_STATIC          (BF_FULL|BF_SHUTR|BF_SHUTW|BF_SHUTR_NOW|BF_SHUTW_NOW)
+#define BF_MASK_STATIC          (BF_SHUTR|BF_SHUTW|BF_SHUTR_NOW|BF_SHUTW_NOW)
 
 
 /* Analysers (channel->analysers).
@@ -257,10 +257,6 @@
    global.maxrewrite, then we don't want to fill the buffer with more than
    ->size - global.maxrewrite + ->to_forward.
 
-   Note that this also means that anyone touching ->to_forward must also take
-   care of updating the BF_FULL flag. For this reason, it's really advised to
-   use buffer_forward() only.
-
    A buffer may contain up to 5 areas :
      - the data waiting to be sent. These data are located between ->w and
        ->w+o ;
diff --git a/src/channel.c b/src/channel.c
index 2af945a..ce90147 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -126,11 +126,6 @@
 	buf->buf.o += len;
 	buf->buf.p = b_ptr(&buf->buf, len);
 	buf->total += len;
-
-	buf->flags &= ~BF_FULL;
-	if (channel_full(buf))
-		buf->flags |= BF_FULL;
-
 	return -1;
 }
 
@@ -138,8 +133,7 @@
  * ->o and to_forward pointers are updated. If the buffer's input is
  * closed, -2 is returned. If there is not enough room left in the buffer, -1
  * is returned. Otherwise the number of bytes copied is returned (1). Buffer
- * flags FULL, EMPTY and READ_PARTIAL are updated if some data can be
- * transferred.
+ * flag READ_PARTIAL is updated if some data can be transferred.
  */
 int bi_putchr(struct channel *buf, char c)
 {
@@ -152,8 +146,6 @@
 	*bi_end(&buf->buf) = c;
 
 	buf->buf.i++;
-	if (channel_full(buf))
-		buf->flags |= BF_FULL;
 	buf->flags |= BF_READ_PARTIAL;
 
 	if (buf->to_forward >= 1) {
@@ -171,8 +163,7 @@
  * closed, -2 is returned. If the block is too large for this buffer, -3 is
  * returned. If there is not enough room left in the buffer, -1 is returned.
  * Otherwise the number of bytes copied is returned (0 being a valid number).
- * Buffer flags FULL, EMPTY and READ_PARTIAL are updated if some data can be
- * transferred.
+ * Buffer flag READ_PARTIAL is updated if some data can be transferred.
  */
 int bi_putblk(struct channel *buf, const char *blk, int len)
 {
@@ -214,10 +205,6 @@
 		b_adv(&buf->buf, fwd);
 	}
 
-	buf->flags &= ~BF_FULL;
-	if (channel_full(buf))
-		buf->flags |= BF_FULL;
-
 	/* notify that some data was read from the SI into the buffer */
 	buf->flags |= BF_READ_PARTIAL;
 	return len;
@@ -343,11 +330,8 @@
 
 	b->buf.i += delta;
 
-	b->flags &= ~BF_FULL;
 	if (buffer_len(&b->buf) == 0)
 		b->buf.p = b->buf.data;
-	if (channel_full(b))
-		b->flags |= BF_FULL;
 
 	return delta;
 }
@@ -382,11 +366,6 @@
 	}
 
 	b->buf.i += delta;
-
-	b->flags &= ~BF_FULL;
-	if (channel_full(b))
-		b->flags |= BF_FULL;
-
 	return delta;
 }
 
diff --git a/src/stream_interface.c b/src/stream_interface.c
index aa7716a..4f31343 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -729,9 +729,6 @@
 
 		b->flags |= BF_WRITE_PARTIAL;
 
-		if (likely(!channel_full(b)))
-			b->flags &= ~BF_FULL;
-
 		if (!b->buf.o) {
 			/* Always clear both flags once everything has been sent, they're one-shot */
 			b->flags &= ~(BF_EXPECT_MORE | BF_SEND_DONTWAIT);
@@ -1054,7 +1051,6 @@
 		max = bi_avail(b);
 
 		if (!max) {
-			b->flags |= BF_FULL;
 			conn->flags |= CO_FL_WAIT_ROOM;
 			break;
 		}
@@ -1115,7 +1111,6 @@
 				b->xfer_large = 0;
 			}
 
-			b->flags |= BF_FULL;
 			si->flags |= SI_FL_WAIT_ROOM;
 			break;
 		}
