[asterisk-commits] russell: trunk r101416 - in /trunk: ./ channels/chan_agent.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Jan 31 13:13:20 CST 2008
Author: russell
Date: Thu Jan 31 13:13:20 2008
New Revision: 101416
URL: http://svn.digium.com/view/asterisk?view=rev&rev=101416
Log:
Merged revisions 101413-101414 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r101413 | russell | 2008-01-31 13:04:52 -0600 (Thu, 31 Jan 2008) | 2 lines
Add missing locking to the find_agent() function.
........
r101414 | russell | 2008-01-31 13:07:46 -0600 (Thu, 31 Jan 2008) | 3 lines
Move the locking from find_agent() into the agent dialplan function handler to
ensure that the agent doesn't disappear while we're looking at it.
........
Modified:
trunk/ (props changed)
trunk/channels/chan_agent.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_agent.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_agent.c?view=diff&rev=101416&r1=101415&r2=101416
==============================================================================
--- trunk/channels/chan_agent.c (original)
+++ trunk/channels/chan_agent.c Thu Jan 31 13:13:20 2008
@@ -2242,6 +2242,9 @@
return res;
}
+/*!
+ * \note This function expects the agent list to be locked
+ */
static struct agent_pvt *find_agent(char *agentid)
{
struct agent_pvt *cur;
@@ -2277,7 +2280,10 @@
if (!args.item)
args.item = "status";
+ AST_LIST_LOCK(&agents);
+
if (!(agent = find_agent(args.agentid))) {
+ AST_LIST_UNLOCK(&agents);
ast_log(LOG_WARNING, "Agent '%s' not found!\n", args.agentid);
return -1;
}
@@ -2303,6 +2309,8 @@
} else if (!strcasecmp(args.item, "exten"))
ast_copy_string(buf, agent->loginchan, len);
+ AST_LIST_UNLOCK(&agents);
+
return 0;
}
More information about the asterisk-commits
mailing list