BUG/MINOR: channel: Set CF_WROTE_DATA when outgoing data are skipped
in co_skip(), the flag CF_WRITE_PARTIAL is set on the channel. The flag
CF_WROTE_DATA must also be set to notify the channel some data were sent.
This patch must be backported to 1.9.
diff --git a/include/proto/channel.h b/include/proto/channel.h
index d16b0e7..017c5d1 100644
--- a/include/proto/channel.h
+++ b/include/proto/channel.h
@@ -910,7 +910,7 @@
* when data have been read directly from the buffer. It is illegal to call
* this function with <len> causing a wrapping at the end of the buffer. It's
* the caller's responsibility to ensure that <len> is never larger than
- * chn->o. Channel flag WRITE_PARTIAL is set.
+ * chn->o. Channel flags WRITE_PARTIAL and WROTE_DATA are set.
*/
static inline void co_skip(struct channel *chn, int len)
{
@@ -919,9 +919,10 @@
c_realign_if_empty(chn);
/* notify that some data was written to the SI from the buffer */
- chn->flags |= CF_WRITE_PARTIAL;
+ chn->flags |= CF_WRITE_PARTIAL | CF_WROTE_DATA;
}
+
/* Tries to copy chunk <chunk> into the channel's buffer after length controls.
* The chn->o and to_forward pointers are updated. If the channel's input is
* closed, -2 is returned. If the block is too large for this buffer, -3 is