From c87f8a599b18e00345808d3bc0719b425f027c07 Mon Sep 17 00:00:00 2001
From: Corey Farrell <git@cfware.com>
Date: Mon, 14 Apr 2014 15:54:50 +0000
Subject: [PATCH] autoservice: fix reference leak of logger callid.

autoservice acquires a local reference to the logger callid of each channel
in a loop.  This local reference was not released, causing the callid of
every channel in autoservice to leak.  This change moves the callid unref
inside the loop.

ASTERISK-23616 #close
Reported by: ibercom
........

Merged revisions 412305 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 412306 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@412307 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/autoservice.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/main/autoservice.c b/main/autoservice.c
index 98f798b1ae..5293cbab4a 100644
--- a/main/autoservice.c
+++ b/main/autoservice.c
@@ -131,6 +131,9 @@ static void *autoservice_run(void *ign)
 
 		callid = ast_channel_callid(chan);
 		ast_callid_threadassoc_change(callid);
+		if (callid) {
+			callid = ast_callid_unref(callid);
+		}
 
 		f = ast_read(chan);
 
@@ -180,11 +183,6 @@ static void *autoservice_run(void *ign)
 		 * If we did, we'd need to ast_frfree(f) if (f). */
 	}
 
-	if (callid) {
-		ast_callid_threadassoc_remove();
-		callid = ast_callid_unref(callid);
-	}
-
 	asthread = AST_PTHREADT_NULL;
 
 	return NULL;
-- 
GitLab