From 2984b40bc9e721af86458a3494fd016ec6511491 Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Wed, 16 Jul 2003 18:54:16 +0000 Subject: [PATCH] Fix race in agent/masquerade git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1196 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channel.c | 1 + channels/chan_agent.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/channel.c b/channel.c index 4eddb9c9f7..bcbf8f11ad 100755 --- a/channel.c +++ b/channel.c @@ -1811,6 +1811,7 @@ int ast_channel_masquerade(struct ast_channel *original, struct ast_channel *clo not really safe not to XXX */ ast_queue_frame(original, &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; } diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 77a8ba10e3..cf6e3b362f 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -634,8 +634,10 @@ static int check_availability(struct agent_pvt *newlyavailable, int needlock) ast_setstate(chan, AST_STATE_UP); /* Go ahead and mark the channel as a zombie so that masquerade will destroy it for us, and we need not call ast_hangup */ + ast_pthread_mutex_lock(&parent->lock); chan->zombie = 1; ast_channel_masquerade(parent, chan); + ast_pthread_mutex_unlock(&parent->lock); p->abouttograb = 0; } else { ast_log(LOG_DEBUG, "Sneaky, parent disappeared in the mean time...\n");