BUG/MINOR: listener: Don't schedule frontend without task in listener_release()
null pointer dereference was reported by Coverity in listener_release()
function. Indeed, we must not try to schedule frontend without task when a
limit is still blocking the frontend. This issue was introduced by commit
65ae1347c7 ("BUG/MINOR: listener: Wake proxy's mngmt task up if necessary on
session release")
This patch should fix issue #2488. It must be backported to all stable
version with the commit above.
(cherry picked from commit f31a4e302e2c24409fbf7bd2d30aa221968eb7a6)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 3f7af840928d3f61675ccab03879bc537d922a2e)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 07838f78f37306d5a3182c2b474d6e2a63c2c23f)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit ca43613aefdd57d1f346212964d3c0278d92f8bb)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit cf1d0f0901b3375522c4b5dd92784d1f249bf938)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/listener.c b/src/listener.c
index 440c026..26b51ab 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -1266,7 +1266,7 @@
unsigned int wait;
int expire = TICK_ETERNITY;
- if (fe->fe_sps_lim &&
+ if (fe->task && fe->fe_sps_lim &&
(wait = next_event_delay(&fe->fe_sess_per_sec,fe->fe_sps_lim, 0))) {
/* we're blocking because a limit was reached on the number of
* requests/s on the frontend. We want to re-check ASAP, which
@@ -1274,7 +1274,7 @@
* timer will have settled down.
*/
expire = tick_first(fe->task->expire, tick_add(now_ms, wait));
- if (fe->task && tick_isset(expire))
+ if (tick_isset(expire))
task_schedule(fe->task, expire);
}
}