From b32907b6c72a638f803459670817e8d3f20077ac Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 25 Jul 2011 08:37:44 +0200 Subject: [PATCH] [MINOR] sessions: only wake waiting listeners up if rate limit is OK Instead of waking a listener up then making it sleep, we only wake them up if we know their rate limit is fine. In the future we could improve on top of that by deciding to wake a proxy-specific task in XX milliseconds to take care of enabling the listeners again. --- src/session.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/session.c b/src/session.c index 65c92db0d..8b50aa922 100644 --- a/src/session.c +++ b/src/session.c @@ -2096,7 +2096,8 @@ struct task *process_session(struct task *t) if (!LIST_ISEMPTY(&global_listener_queue)) dequeue_all_listeners(&global_listener_queue); - if (!LIST_ISEMPTY(&s->fe->listener_queue)) + if (!LIST_ISEMPTY(&s->fe->listener_queue) && + (!s->fe->fe_sps_lim || freq_ctr_remain(&s->fe->fe_sess_per_sec, s->fe->fe_sps_lim, 0) > 0)) dequeue_all_listeners(&s->fe->listener_queue); if (unlikely((global.mode & MODE_DEBUG) &&