diff options
author | Matt Jordan <mjordan@digium.com> | 2015-05-01 06:55:23 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2015-05-01 06:55:23 -0500 |
commit | 01f3d5b7d4821e9c7fc21982814eb2c137f1d8d9 (patch) | |
tree | 7b7b4f1de17a166622edbae648c65d4047571d56 | |
parent | 6b208d8c3bf98dc2f964124867110d1504d4e903 (diff) | |
parent | dc23204acae2bc3cff01c1ef57efd88cfe6bd825 (diff) |
Merge "Prevent potential crash on blond transfer."
-rw-r--r-- | main/stasis_channels.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/main/stasis_channels.c b/main/stasis_channels.c index 5990cddce..94a24e14f 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -1326,6 +1326,7 @@ static void dial_target_free(struct dial_target *doomed) return; } ast_free(doomed->dialstring); + ast_channel_cleanup(doomed->peer); ast_free(doomed); } @@ -1348,7 +1349,7 @@ static void dial_masquerade_datastore_cleanup(struct dial_masquerade_datastore * while ((cur = AST_LIST_REMOVE_HEAD(&masq_data->dialed_peers, list))) { dial_target_free(cur); } - masq_data->caller = NULL; + masq_data->caller = ast_channel_cleanup(masq_data->caller); } static void dial_masquerade_datastore_remove_chan(struct dial_masquerade_datastore *masq_data, struct ast_channel *chan) @@ -1556,7 +1557,7 @@ static struct dial_masquerade_datastore *dial_masquerade_datastore_add( ast_datastore_free(datastore); return NULL; } - masq_data->caller = chan; + masq_data->caller = ast_channel_ref(chan); } datastore->data = masq_data; @@ -1604,7 +1605,7 @@ static int set_dial_masquerade(struct ast_channel *caller, struct ast_channel *p return -1; } } - target->peer = peer; + target->peer = ast_channel_ref(peer); /* Put peer target into datastore */ ao2_lock(masq_data); |