aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_agent.c
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2008-05-29 17:20:16 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2008-05-29 17:20:16 +0000
commitbca55854e272254e9a80c364a93a11de94fd66cd (patch)
treef9dba4c3b8fb8146d3f0ee9d71f57b489ee6baa2 /channels/chan_agent.c
parent5ccf4bbcb3e3cdc8fcf2bce3cb9c65c66b5cdeea (diff)
Add some debugging code that ensures that when we do deadlock avoidance, we
don't lose the information about how a lock was originally acquired. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@118953 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_agent.c')
-rw-r--r--channels/chan_agent.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 4149f1c7f..51633bece 100644
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -1588,9 +1588,7 @@ static int agent_logoff(const char *agent, int soft)
ast_mutex_lock(&p->lock);
while (p->owner && ast_channel_trylock(p->owner)) {
- ast_mutex_unlock(&p->lock);
- usleep(1);
- ast_mutex_lock(&p->lock);
+ DEADLOCK_AVOIDANCE(&p->lock);
}
if (p->owner) {
ast_softhangup(p->owner, AST_SOFTHANGUP_EXPLICIT);
@@ -1598,9 +1596,7 @@ static int agent_logoff(const char *agent, int soft)
}
while (p->chan && ast_channel_trylock(p->chan)) {
- ast_mutex_unlock(&p->lock);
- usleep(1);
- ast_mutex_lock(&p->lock);
+ DEADLOCK_AVOIDANCE(&p->lock);
}
if (p->chan) {
ast_softhangup(p->chan, AST_SOFTHANGUP_EXPLICIT);