aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_agent.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-07-16 18:54:16 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-07-16 18:54:16 +0000
commitc27c435bd9bb41e3c8fa4facc330475ea86ec750 (patch)
tree7b0cb38ddf49b4b1e3ffd2780d6ad34e3eb3e58f /channels/chan_agent.c
parent373925d69e35d516f80ff8067f792a826cc2ab71 (diff)
Fix race in agent/masquerade
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1196 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_agent.c')
-rwxr-xr-xchannels/chan_agent.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 77a8ba10e..cf6e3b362 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");