MINOR: channel/htx: Add the HTX version of channel_truncate/erase

The function channel_htx_truncate() can now be used on HTX buffer to truncate
all incoming data, keeping outgoing one intact. This function relies on the
function channel_htx_erase() and htx_truncate().

This patch may be backported to 1.9. If so, the patch "MINOR: channel/htx: Add
the HTX version of channel_truncate()" must also be backported.
This commit is contained in:
Christopher Faulet 2019-01-07 14:55:10 +01:00
parent 00cf697215
commit f7ed195ac8

View File

@ -548,6 +548,12 @@ static inline void channel_erase(struct channel *chn)
b_reset(&chn->buf);
}
static inline void channel_htx_erase(struct channel *chn, struct htx *htx)
{
htx_reset(htx);
channel_erase(chn);
}
/* marks the channel as "shutdown" ASAP for reads */
static inline void channel_shutr_now(struct channel *chn)
{
@ -877,6 +883,17 @@ static inline void channel_truncate(struct channel *chn)
chn->buf.data = co_data(chn);
}
static inline void channel_htx_truncate(struct channel *chn, struct htx *htx)
{
if (!co_data(chn))
return channel_htx_erase(chn, htx);
chn->to_forward = 0;
if (htx->data == co_data(chn))
return;
htx_truncate(htx, co_data(chn));
}
/* This function realigns a possibly wrapping channel buffer so that the input
* part is contiguous and starts at the beginning of the buffer and the output
* part ends at the end of the buffer. This provides the best conditions since