diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-09-06 19:10:08 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-09-06 19:10:08 +0000 |
commit | 248dda03e57fca3d621e7636341bb4d34bef0f9b (patch) | |
tree | 086a10305816e9e18cda8ed832d8a10bd535fabe /channels/chan_agent.c | |
parent | ab4bc77ab528e3417f422643544bc408c8876a76 (diff) |
Be sure we have the agent lock
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1478 f38db490-d61c-443f-a65b-d21fe96a405b
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(); |