[asterisk-commits] russell: trunk r131072 - /trunk/res/res_agi.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Jul 15 13:46:41 CDT 2008
Author: russell
Date: Tue Jul 15 13:46:40 2008
New Revision: 131072
URL: http://svn.digium.com/view/asterisk?view=rev&rev=131072
Log:
Fix a couple of places in res_agi where the agi_commands lock would not be
released, causing a deadlock. (Reported by mvanbaak in #asterisk-dev,
discovered by bbryant's change to the lock tracking code to yell at you
if a thread exits with a lock still held)
Modified:
trunk/res/res_agi.c
Modified: trunk/res/res_agi.c
URL: http://svn.digium.com/view/asterisk/trunk/res/res_agi.c?view=diff&rev=131072&r1=131071&r2=131072
==============================================================================
--- trunk/res/res_agi.c (original)
+++ trunk/res/res_agi.c Tue Jul 15 13:46:40 2008
@@ -2434,8 +2434,10 @@
if (!e->cmda[y] && !exact)
break;
/* don't segfault if the next part of a command doesn't exist */
- if (!e->cmda[y])
+ if (!e->cmda[y]) {
+ AST_RWLIST_UNLOCK(&agi_commands);
return NULL;
+ }
if (strcasecmp(e->cmda[y], cmds[y]))
match = 0;
}
@@ -2443,8 +2445,10 @@
a candidate (unless we're looking for a really inexact answer */
if ((exact > -1) && e->cmda[y])
match = 0;
- if (match)
+ if (match) {
+ AST_RWLIST_UNLOCK(&agi_commands);
return e;
+ }
}
AST_RWLIST_UNLOCK(&agi_commands);
return NULL;
More information about the asterisk-commits
mailing list