diff options
author | Corey Farrell <git@cfware.com> | 2014-04-14 15:54:50 +0000 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2014-04-14 15:54:50 +0000 |
commit | c87f8a599b18e00345808d3bc0719b425f027c07 (patch) | |
tree | 5962fc97d603b5cfa782ab4e955cb2268f797309 | |
parent | eed03fc01ac8c6ef424eff65c718f7802a4cb1ef (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
-rw-r--r-- | main/autoservice.c | 8 |
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; |