]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: channel: Set CF_WROTE_DATA when outgoing data are skipped
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 25 Feb 2019 14:50:12 +0000 (15:50 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 26 Feb 2019 13:04:23 +0000 (14:04 +0100)
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.

include/proto/channel.h

index d16b0e7306862e52a9396a07c5feaa1e76120209..017c5d1798374d3aa75176a129bf0b8d9ac3fb4f 100644 (file)
@@ -910,7 +910,7 @@ static inline void channel_slow_realign(struct channel *chn, char *swap)
  * 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 @@ static inline void co_skip(struct channel *chn, int len)
        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