diff options
author | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-04-06 01:03:06 +0000 |
---|---|---|
committer | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-04-06 01:03:06 +0000 |
commit | 7dbeaf262e00d03227a23af30bbc45ad3b1a6714 (patch) | |
tree | af6e50231cefcea607d66080cc4b8b6e8bd40539 /channels | |
parent | b34072961fcfdc277befc2c1856009572d6b42d2 (diff) |
Merged revisions 256265 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r256265 | rmudgett | 2010-04-05 19:39:44 -0500 (Mon, 05 Apr 2010) | 12 lines
Merged revisions 256225 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r256225 | rmudgett | 2010-04-05 19:10:16 -0500 (Mon, 05 Apr 2010) | 5 lines
DAHDI/PRI call to pri_channel_bridge() not protected by PRI lock.
SWP-1231
ABE-2163
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@256268 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_dahdi.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index fd590a247..49db2b055 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -5170,7 +5170,6 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch #ifdef PRI_2BCT int triedtopribridge = 0; - q931_call *q931c0 = NULL, *q931c1 = NULL; #endif /* For now, don't attempt to native bridge if either channel needs DTMF detection. @@ -5387,13 +5386,15 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch } #ifdef PRI_2BCT - q931c0 = p0->call; - q931c1 = p1->call; - if (p0->transfer && p1->transfer - && q931c0 && q931c1 - && !triedtopribridge) { - pri_channel_bridge(q931c0, q931c1); + if (!triedtopribridge) { triedtopribridge = 1; + if (p0->pri && p0->pri == p1->pri && p0->transfer && p1->transfer) { + ast_mutex_lock(&p0->pri->lock); + if (p0->call && p1->call) { + pri_channel_bridge(p0->call, p1->call); + } + ast_mutex_unlock(&p0->pri->lock); + } } #endif |