From: Christopher Faulet Date: Mon, 25 Feb 2019 09:44:51 +0000 (+0100) Subject: MINOR: channel/htx: Add function to skips output bytes from an HTX channel X-Git-Tag: v2.0-dev1~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c6827d52c1dd5552398749e6ad5e06c8c6265ae3;p=thirdparty%2Fhaproxy.git MINOR: channel/htx: Add function to skips output bytes from an HTX channel It is the HTX version of co_skip(). Internally, It uses the function htx_drain(). It will be used by other commits to fix bugs, so it must be backported to 1.9. --- diff --git a/include/proto/channel.h b/include/proto/channel.h index 017c5d1798..a33262e21f 100644 --- a/include/proto/channel.h +++ b/include/proto/channel.h @@ -922,6 +922,23 @@ static inline void co_skip(struct channel *chn, int len) chn->flags |= CF_WRITE_PARTIAL | CF_WROTE_DATA; } +/* HTX version of co_skip(). This function skips at most bytes from the + * output of the channel . Depending on how data are stored in less + * than bytes can be skipped. Channel flags WRITE_PARTIAL and WROTE_DATA + * are set. + */ +static inline void co_htx_skip(struct channel *chn, struct htx *htx, int len) +{ + struct htx_ret htxret; + + htxret = htx_drain(htx, len); + if (htxret.ret) { + chn->output -= htxret.ret; + + /* notify that some data was written to the SI from the buffer */ + chn->flags |= CF_WRITE_PARTIAL | CF_WROTE_DATA; + } +} /* Tries to copy chunk into the channel's buffer after length controls. * The chn->o and to_forward pointers are updated. If the channel's input is