diff --git a/include/proto/channel.h b/include/proto/channel.h index 3ebaf7fce3..d192c9b28e 100644 --- a/include/proto/channel.h +++ b/include/proto/channel.h @@ -912,7 +912,7 @@ static inline void channel_slow_realign(struct channel *chn, char *swap) /* Forward all headers of an HTX message, starting from the SL to the EOH. This - * function also updates the start-line position. + * function also updates the first block position. */ static inline void channel_htx_fwd_headers(struct channel *chn, struct htx *htx) { @@ -930,6 +930,33 @@ static inline void channel_htx_fwd_headers(struct channel *chn, struct htx *htx) c_adv(chn, data); } +/* Forward bytes of payload of an HTX message. This function also updates + * the first block position. + */ +static inline void channel_htx_fwd_payload(struct channel *chn, struct htx *htx, size_t data) +{ + int32_t pos; + + c_adv(chn, data); + for (pos = htx_get_first(htx); pos != -1; pos = htx_get_next(htx, pos)) { + uint32_t sz = htx_get_blksz(htx_get_blk(htx, pos)); + + if (data < sz) + break; + data -= sz; + } + htx->first = pos; +} + +/* Forward all data of an HTX message. This function also updates the first + * block position. + */ +static inline void channel_htx_fwd_all(struct channel *chn, struct htx *htx) +{ + htx->first = -1; + c_adv(chn, htx->data - co_data(chn)); +} + /* * Advance the channel buffer's read pointer by bytes. This is useful * when data have been read directly from the buffer. It is illegal to call