From aad458587dda20f42476463fc2b82753f6546336 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 14 May 2019 22:14:03 +0200 Subject: [PATCH] MINOR: channel/htx: Call channel_htx_recv_max() from channel_recv_max() When channel_recv_max() is called for an HTX stream, we fall back on the HTX version. This function is called from si_cs_recv(). This will let us pass the max amount of bytes to read to HTX multiplexers. --- include/proto/channel.h | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/include/proto/channel.h b/include/proto/channel.h index b2cd5c374..b53e17793 100644 --- a/include/proto/channel.h +++ b/include/proto/channel.h @@ -38,6 +38,7 @@ #include #include +#include #include /* perform minimal intializations, report 0 in case of error, 1 if OK. */ @@ -778,6 +779,17 @@ static inline int channel_htx_full(const struct channel *c, const struct htx *ht } +/* HTX version of channel_recv_max(). */ +static inline int channel_htx_recv_max(const struct channel *chn, const struct htx *htx) +{ + int ret; + + ret = channel_htx_recv_limit(chn, htx) - htx_used_space(htx); + if (ret < 0) + ret = 0; + return ret; +} + /* Returns the amount of space available at the input of the buffer, taking the * reserved space into account if ->to_forward indicates that an end of transfer * is close to happen. The test is optimized to avoid as many operations as @@ -787,23 +799,15 @@ static inline int channel_recv_max(const struct channel *chn) { int ret; + if (IS_HTX_STRM(chn_strm(chn))) + return channel_htx_recv_max(chn, htxbuf(&chn->buf)); + ret = channel_recv_limit(chn) - b_data(&chn->buf); if (ret < 0) ret = 0; return ret; } -/* HTX version of channel_recv_max(). */ -static inline int channel_htx_recv_max(const struct channel *chn, const struct htx *htx) -{ - int ret; - - ret = channel_htx_recv_limit(chn, htx) - htx->data; - if (ret < 0) - ret = 0; - return ret; -} - /* Returns the amount of bytes that can be written over the input data at once, * including reserved space which may be overwritten. This is used by Lua to * insert data in the input side just before the other data using buffer_replace().