mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-19 04:00:46 +00:00
MINOR: channel: add new function channel_congested()
This function returns non-zero if the channel is congested with data in transit waiting for leaving, indicating to the caller that it should wait for the reserve to be released before starting to process new data in case it needs the ability to append data. This is meant to be used while waiting for a clean response buffer before processing a request.
This commit is contained in:
parent
f51d03cf14
commit
55e58f2334
@ -149,6 +149,27 @@ static inline int channel_is_rewritable(const struct channel *chn)
|
||||
return rem >= 0;
|
||||
}
|
||||
|
||||
/* Returns non-zero if the channel is congested with data in transit waiting
|
||||
* for leaving, indicating to the caller that it should wait for the reserve to
|
||||
* be released before starting to process new data in case it needs the ability
|
||||
* to append data. This is meant to be used while waiting for a clean response
|
||||
* buffer before processing a request.
|
||||
*/
|
||||
static inline int channel_congested(const struct channel *chn)
|
||||
{
|
||||
if (!chn->buf->o)
|
||||
return 0;
|
||||
|
||||
if (!channel_is_rewritable(chn))
|
||||
return 1;
|
||||
|
||||
if (chn->buf->p + chn->buf->i >
|
||||
chn->buf->data + chn->buf->size - global.tune.maxrewrite)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Tells whether data are likely to leave the buffer. This is used to know when
|
||||
* we can safely ignore the reserve since we know we cannot retry a connection.
|
||||
* It returns zero if data are blocked, non-zero otherwise.
|
||||
|
Loading…
Reference in New Issue
Block a user