diff options
author | Mark Spencer <markster@digium.com> | 2003-09-06 19:10:08 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2003-09-06 19:10:08 +0000 |
commit | d488a8c52207359aad6e2126cd7f1430c0395717 (patch) | |
tree | 086a10305816e9e18cda8ed832d8a10bd535fabe /channels/chan_agent.c | |
parent | d4c55fbdb5f9521c4c5e9b5817e955ef0a81aded (diff) |
Be sure we have the agent lock
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1478 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_agent.c')
-rwxr-xr-x | channels/chan_agent.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 2f3b4cba9..cbdff7a4c 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -1213,6 +1213,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) if (res) break; + ast_mutex_lock(&agentlock); ast_mutex_lock(&p->lock); if (p->lastdisc.tv_sec) { gettimeofday(&tv, NULL); @@ -1227,6 +1228,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) } } ast_mutex_unlock(&p->lock); + ast_mutex_unlock(&agentlock); /* Synchronize channel ownership between call to agent and itself. */ ast_mutex_lock( &p->app_lock ); ast_mutex_lock(&p->lock); @@ -1239,9 +1241,11 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode) agent_cont_sleep, p ); ast_mutex_unlock( &p->app_lock ); if ((p->ackcall > 1) && (res == 1)) { + ast_mutex_lock(&agentlock); ast_mutex_lock(&p->lock); check_availability(p, 0); ast_mutex_unlock(&p->lock); + ast_mutex_unlock(&agentlock); res = 0; } sched_yield(); |