From 2ae2531c0b9c580fb3a65319c2ceb475ebca2b6d Mon Sep 17 00:00:00 2001 From: Matthew Jordan Date: Sun, 4 Nov 2012 03:06:49 +0000 Subject: [PATCH] Don't attempt to purge sessions when no sessions exist Manager's tcp/tls objects have a periodic function that purge old manager sessions periodically. During shutdown, the underlying container holding those sessions can be disposed of and set to NULL before the tcp/tls periodic function is stopped. If the periodic function fires, it will attempt to iterate over a NULL container. This patch checks for whether or not the sessions container exists before attempting to purge sessions out of it. If the sessions container is NULL, we simply return. Note that this error was also caught by the Asterisk Test Suite. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@375800 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/manager.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main/manager.c b/main/manager.c index b02bb46e7c..d9577a00cd 100644 --- a/main/manager.c +++ b/main/manager.c @@ -5077,6 +5077,10 @@ static void purge_sessions(int n_max) time_t now = time(NULL); struct ao2_iterator i; + if (!sessions) { + return; + } + i = ao2_iterator_init(sessions, 0); while ((session = ao2_iterator_next(&i)) && n_max > 0) { ao2_lock(session); -- 2.47.3