diff options
author | Matthew Jordan <mjordan@digium.com> | 2013-06-24 23:56:54 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2013-06-24 23:56:54 +0000 |
commit | 91217ac3c1fd73efe13407a013260ac7cf937b7b (patch) | |
tree | 767bdbef7b458a98b58a15d3953023c0e570b424 /main/cel.c | |
parent | f33d074d1a57c4fab55197ec31404b785f90107c (diff) |
Fix a variety of memory leaks
This patch addresses the following memory/ref counting leaks:
* main/devicestate.c - unsubscribe and join our devicestate message
subscription
* main/cel.c - clean up the datastore and config objects on exist
* main/parking.c - cleanup memory leak of retriever snapshot on message
payload destruction
* res/parking/parking_bridge.c - cleanup memory leak of retrieve snapshot
on message payload destruction
* main/presencestate.c - unsubscribe and join the caching topic on exit
* manager.c - properly unregister the manager action "BlindTransfer"
* sorcery.c - shutdown the threadpool on exit and dispose of any wizards
(issue ASTERISK-21906)
Reported by: John Hardin
patches:
cel.patch uploaded by jhardin (license #6512)
devicestate.patch uploaded by jhardin (license #6512)
manager.patch uploaded by jardin (license #6512)
presencestate.patch uploaded by jhardin (license #6512)
retriever-channel-snapshot.patch uploaded by jhardin (license #6512)
sorcery.patch uploaded by jhardin (license #6512)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392797 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/cel.c')
-rw-r--r-- | main/cel.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/main/cel.c b/main/cel.c index b3802c7ee..7185acf59 100644 --- a/main/cel.c +++ b/main/cel.c @@ -1415,6 +1415,8 @@ static void cel_dial_cb(void *data, struct stasis_subscription *sub, static void ast_cel_engine_term(void) { + aco_info_destroy(&cel_cfg_info); + ao2_global_obj_release(cel_configs); stasis_message_router_unsubscribe_and_join(cel_state_router); cel_state_router = NULL; ao2_cleanup(cel_state_topic); @@ -1422,11 +1424,13 @@ static void ast_cel_engine_term(void) cel_channel_forwarder = stasis_unsubscribe_and_join(cel_channel_forwarder); cel_bridge_forwarder = stasis_unsubscribe_and_join(cel_bridge_forwarder); cel_parking_forwarder = stasis_unsubscribe_and_join(cel_parking_forwarder); - ao2_cleanup(linkedids); - linkedids = NULL; - ast_cli_unregister(&cli_status); ao2_cleanup(bridge_primaries); bridge_primaries = NULL; + ast_cli_unregister(&cli_status); + ao2_cleanup(cel_dialstatus_store); + cel_dialstatus_store = NULL; + ao2_cleanup(linkedids); + linkedids = NULL; } int ast_cel_engine_init(void) |