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);
 		}
 	}