summaryrefslogtreecommitdiff
path: root/main/autoservice.c
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2014-04-14 15:54:50 +0000
committerCorey Farrell <git@cfware.com>2014-04-14 15:54:50 +0000
commitc87f8a599b18e00345808d3bc0719b425f027c07 (patch)
tree5962fc97d603b5cfa782ab4e955cb2268f797309 /main/autoservice.c
parenteed03fc01ac8c6ef424eff65c718f7802a4cb1ef (diff)
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
Diffstat (limited to 'main/autoservice.c')
-rw-r--r--main/autoservice.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/main/autoservice.c b/main/autoservice.c
index 98f798b1a..5293cbab4 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;