From: Richard Mudgett Date: Tue, 27 Apr 2010 16:52:29 +0000 (+0000) Subject: Re-fix dahdi_request() iflist locking since CCSS merged. X-Git-Tag: 11.0.0-beta1~3118 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3bda444f1e196a1e281e9acc63c83f990b621145;p=thirdparty%2Fasterisk.git 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 --- diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index aae30d3da1..2ae8cf92d8 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)) {