mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-18 11:40:50 +00:00
MEDIUM: channel: allocate without queuing when retrying
Now when trying to allocate a channel buffer, we can check if we've been notified of availability via the producer stream connector callback, in which case we should not consult the queue, or if we're doing a first allocation and check the queue.
This commit is contained in:
parent
b5714b45e8
commit
5b8d27617f
@ -915,7 +915,14 @@ static inline int ci_space_for_replace(const struct channel *chn)
|
||||
*/
|
||||
static inline int channel_alloc_buffer(struct channel *chn, struct buffer_wait *wait)
|
||||
{
|
||||
if (b_alloc(&chn->buf, DB_CHANNEL) != NULL)
|
||||
int force_noqueue;
|
||||
|
||||
/* If the producer has been notified of recent availability, we must
|
||||
* not check the queue again.
|
||||
*/
|
||||
force_noqueue = !!(chn_prod(chn)->flags & SC_FL_HAVE_BUFF);
|
||||
|
||||
if (b_alloc(&chn->buf, DB_CHANNEL | (force_noqueue ? DB_F_NOQUEUE : 0)) != NULL)
|
||||
return 1;
|
||||
|
||||
b_requeue(DB_CHANNEL, wait);
|
||||
|
Loading…
Reference in New Issue
Block a user