MINOR: channel/htx: Add functions to forward a part or all HTX payload

The functions channel_htx_fwd_payload() and channel_htx_fwd_all() should now be
used to forward, respectively, a part of the HTX payload or all of it. These
functions forward data and update the first block position.
This commit is contained in:
Christopher Faulet 2019-05-23 11:06:10 +02:00 committed by Willy Tarreau
parent 8fa60e4613
commit dab5ab551d

View File

@ -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 <data> 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 <len> bytes. This is useful
* when data have been read directly from the buffer. It is illegal to call