summaryrefslogtreecommitdiff
path: root/main/cel.c
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2013-06-24 23:56:54 +0000
committerMatthew Jordan <mjordan@digium.com>2013-06-24 23:56:54 +0000
commit91217ac3c1fd73efe13407a013260ac7cf937b7b (patch)
tree767bdbef7b458a98b58a15d3953023c0e570b424 /main/cel.c
parentf33d074d1a57c4fab55197ec31404b785f90107c (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.c10
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)