summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Jordan <mjordan@digium.com>2015-05-01 06:55:15 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2015-05-01 06:55:15 -0500
commited51fbbe9c084e9dfc7527a128646b5ed5337851 (patch)
tree31bdf1de2d068e0d29dec3a4583cac497971bbdc
parent3efe0df044c9e186205b16aa5b1ea8f9cc0ed92b (diff)
parent077979618b5a472c4bd3612680f71275a18d3841 (diff)
Merge "Prevent potential crash on blond transfer." into 13
-rw-r--r--main/stasis_channels.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/main/stasis_channels.c b/main/stasis_channels.c
index 968afbd7d..9ed38c3ae 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);