summaryrefslogtreecommitdiff
path: root/channels/chan_dahdi.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2010-04-27 16:52:29 +0000
committerRichard Mudgett <rmudgett@digium.com>2010-04-27 16:52:29 +0000
commit3bda444f1e196a1e281e9acc63c83f990b621145 (patch)
tree4cb5325cafaeedd9628e741d575ddc0f49f4f04e /channels/chan_dahdi.c
parentaf4a5f0955e39e5bf7bec82dfdc8ef8eb349ed98 (diff)
Re-fix dahdi_request() iflist locking since CCSS merged.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@259229 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r--channels/chan_dahdi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index aae30d3da..2ae8cf92d 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -12522,15 +12522,16 @@ static struct ast_channel *dahdi_request(const char *type, format_t format, cons
int transcapdigital = 0;
struct dahdi_starting_point start;
+ ast_mutex_lock(&iflock);
p = determine_starting_point(data, &start);
if (!p) {
/* We couldn't determine a starting point, which likely means badly-formatted channel name. Abort! */
+ ast_mutex_unlock(&iflock);
return NULL;
}
/* Search for an unowned channel */
exitpvt = p;
- ast_mutex_lock(&iflock);
while (p && !tmp) {
if (start.roundrobin)
round_robin[start.rr_starting_point] = p;
@@ -12714,11 +12715,12 @@ static int dahdi_cc_callback(struct ast_channel *inbound, const char *dest, ast_
int groupmatched = 0;
int channelmatched = 0;
+ ast_mutex_lock(&iflock);
p = determine_starting_point(dest, &start);
if (!p) {
+ ast_mutex_unlock(&iflock);
return -1;
}
- ast_mutex_lock(&iflock);
exitpvt = p;
for (;;) {
if (is_group_or_channel_match(p, start.span, start.groupmatch, &groupmatched, start.channelmatch, &channelmatched)) {