mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 12:41:00 +02:00
BUG/MINOR: channel: compare to_forward with buf->i, not buf->size
We know that all incoming data are going to be purged if to_forward is greater than them, not only if greater than the buffer size. This buf has no direct impact on this version, but it participates to some bugs affecting http-send-name-header since 1.4. This fix will have to be backported down to 1.4 albeit in a different form.
This commit is contained in:
parent
0428a146c0
commit
bb3f994f1a
@ -138,10 +138,13 @@ static inline int channel_full(const struct channel *chn)
|
||||
if (!rem)
|
||||
return 1; /* buffer already full */
|
||||
|
||||
if (chn->to_forward >= chn->buf->size ||
|
||||
(CHN_INFINITE_FORWARD < MAX_RANGE(typeof(chn->buf->size)) && // just there to ensure gcc
|
||||
chn->to_forward == CHN_INFINITE_FORWARD)) // avoids the useless second
|
||||
return 0; // test whenever possible
|
||||
/* now we know there's some room left, verify if we're touching
|
||||
* the reserve with some permanent input data.
|
||||
*/
|
||||
if (chn->to_forward >= chn->buf->i ||
|
||||
(CHN_INFINITE_FORWARD < MAX_RANGE(typeof(chn->buf->i)) && // just there to ensure gcc
|
||||
chn->to_forward == CHN_INFINITE_FORWARD)) // avoids the useless second
|
||||
return 0; // test whenever possible
|
||||
|
||||
rem -= global.tune.maxrewrite;
|
||||
rem += chn->buf->o;
|
||||
@ -300,8 +303,8 @@ static inline int bi_avail(const struct channel *chn)
|
||||
if (!rem)
|
||||
return rem; /* buffer already full */
|
||||
|
||||
if (chn->to_forward >= chn->buf->size ||
|
||||
(CHN_INFINITE_FORWARD < MAX_RANGE(typeof(chn->buf->size)) && // just there to ensure gcc
|
||||
if (chn->to_forward >= chn->buf->i ||
|
||||
(CHN_INFINITE_FORWARD < MAX_RANGE(typeof(chn->buf->i)) && // just there to ensure gcc
|
||||
chn->to_forward == CHN_INFINITE_FORWARD)) // avoids the useless second
|
||||
return rem; // test whenever possible
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user