MINOR: channel: Add the function channel_add_input

This function must be called when new incoming data are pushed in the channel's
buffer. It updates the channel state and take care of the fast forwarding by
consuming right amount of data and decrementing "->to_forward" accordingly when
necessary. In fact, this patch just moves a part of ci_putblk in a dedicated
function.

This patch must be backported to 1.9.
diff --git a/include/proto/channel.h b/include/proto/channel.h
index 5d9c7a8..0ea458f 100644
--- a/include/proto/channel.h
+++ b/include/proto/channel.h
@@ -361,6 +361,25 @@
 	chn->to_forward = CHN_INFINITE_FORWARD;
 }
 
+/* <len> bytes of input data was added into the channel <chn>. This functions
+ * must be called to update the channel state. It also handles the fast
+ * forwarding. */
+static inline void channel_add_input(struct channel *chn, unsigned int len)
+{
+	if (chn->to_forward) {
+		unsigned long fwd = len;
+		if (chn->to_forward != CHN_INFINITE_FORWARD) {
+			if (fwd > chn->to_forward)
+				fwd = chn->to_forward;
+			chn->to_forward -= fwd;
+		}
+		c_adv(chn, fwd);
+	}
+	/* notify that some data was read */
+	chn->total += len;
+	chn->flags |= CF_READ_PARTIAL;
+}
+
 static inline unsigned long long channel_htx_forward(struct channel *chn, struct htx *htx, unsigned long long bytes)
 {
 	unsigned long long ret;
@@ -378,7 +397,6 @@
 	channel_forward_forever(chn);
 	b_set_data(&chn->buf, b_size(&chn->buf));
 }
-
 /*********************************************************************/
 /* These functions are used to compute various channel content sizes */
 /*********************************************************************/