mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-16 18:06:31 +00:00
Add channel locking for channel snapshot creation.
This adds channel locks around calls to create channel snapshots as well as other functions which operate on a channel and then end up creating a channel snapshot. Functions that expect the channel to be locked prior to being called have had their documentation updated to indicate such. ........ Merged revisions 403311 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@403314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -397,7 +397,9 @@ struct stasis_message *ast_bridge_blob_create(
|
||||
}
|
||||
|
||||
if (chan) {
|
||||
ast_channel_lock(chan);
|
||||
obj->channel = ast_channel_snapshot_create(chan);
|
||||
ast_channel_unlock(chan);
|
||||
if (obj->channel == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -579,7 +581,9 @@ static int bridge_channel_snapshot_pair_init(struct ast_bridge_channel_pair *pai
|
||||
}
|
||||
}
|
||||
|
||||
ast_channel_lock(pair->channel);
|
||||
snapshot_pair->channel_snapshot = ast_channel_snapshot_create(pair->channel);
|
||||
ast_channel_unlock(pair->channel);
|
||||
if (!snapshot_pair->channel_snapshot) {
|
||||
return -1;
|
||||
}
|
||||
@@ -915,7 +919,9 @@ void ast_bridge_publish_attended_transfer_link(int is_external, enum ast_transfe
|
||||
|
||||
transfer_msg->dest_type = AST_ATTENDED_TRANSFER_DEST_LINK;
|
||||
for (i = 0; i < 2; ++i) {
|
||||
ast_channel_lock(locals[i]);
|
||||
transfer_msg->dest.links[i] = ast_channel_snapshot_create(locals[i]);
|
||||
ast_channel_unlock(locals[i]);
|
||||
if (!transfer_msg->dest.links[i]) {
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user