mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Fix race in agent/masquerade
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1811,6 +1811,7 @@ int ast_channel_masquerade(struct ast_channel *original, struct ast_channel *clo
|
|||||||
not really safe not to XXX */
|
not really safe not to XXX */
|
||||||
ast_queue_frame(original, &null, 0);
|
ast_queue_frame(original, &null, 0);
|
||||||
ast_queue_frame(clone, &null, 0);
|
ast_queue_frame(clone, &null, 0);
|
||||||
|
ast_log(LOG_DEBUG, "Done planning to masquerade %s into the structure of %s\n", original->name, clone->name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -634,8 +634,10 @@ static int check_availability(struct agent_pvt *newlyavailable, int needlock)
|
|||||||
ast_setstate(chan, AST_STATE_UP);
|
ast_setstate(chan, AST_STATE_UP);
|
||||||
/* Go ahead and mark the channel as a zombie so that masquerade will
|
/* Go ahead and mark the channel as a zombie so that masquerade will
|
||||||
destroy it for us, and we need not call ast_hangup */
|
destroy it for us, and we need not call ast_hangup */
|
||||||
|
ast_pthread_mutex_lock(&parent->lock);
|
||||||
chan->zombie = 1;
|
chan->zombie = 1;
|
||||||
ast_channel_masquerade(parent, chan);
|
ast_channel_masquerade(parent, chan);
|
||||||
|
ast_pthread_mutex_unlock(&parent->lock);
|
||||||
p->abouttograb = 0;
|
p->abouttograb = 0;
|
||||||
} else {
|
} else {
|
||||||
ast_log(LOG_DEBUG, "Sneaky, parent disappeared in the mean time...\n");
|
ast_log(LOG_DEBUG, "Sneaky, parent disappeared in the mean time...\n");
|
||||||
|
Reference in New Issue
Block a user