[asterisk-commits] rmudgett: trunk r256265 - in /trunk: ./ channels/chan_dahdi.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Apr 5 19:39:46 CDT 2010
Author: rmudgett
Date: Mon Apr 5 19:39:44 2010
New Revision: 256265
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=256265
Log:
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
........
Modified:
trunk/ (props changed)
trunk/channels/chan_dahdi.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_dahdi.c?view=diff&rev=256265&r1=256264&r2=256265
==============================================================================
--- trunk/channels/chan_dahdi.c (original)
+++ trunk/channels/chan_dahdi.c Mon Apr 5 19:39:44 2010
@@ -6666,25 +6666,31 @@
}
#ifdef PRI_2BCT
- switch (p0->sig) {
- case SIG_PRI_LIB_HANDLE_CASES:
- q931c0 = ((struct sig_pri_chan *) (p0->sig_pvt))->call;
- break;
- default:
- q931c0 = NULL;
- break;
- }
- switch (p1->sig) {
- case SIG_PRI_LIB_HANDLE_CASES:
- q931c1 = ((struct sig_pri_chan *) (p1->sig_pvt))->call;
- break;
- default:
- q931c1 = NULL;
- break;
- }
- if (q931c0 && q931c1 && p0->transfer && p1->transfer && !triedtopribridge) {
+ if (!triedtopribridge) {
triedtopribridge = 1;
- pri_channel_bridge(q931c0, q931c1);
+ if (p0->pri && p0->pri == p1->pri && p0->transfer && p1->transfer) {
+ ast_mutex_lock(&p0->pri->lock);
+ switch (p0->sig) {
+ case SIG_PRI_LIB_HANDLE_CASES:
+ q931c0 = ((struct sig_pri_chan *) (p0->sig_pvt))->call;
+ break;
+ default:
+ q931c0 = NULL;
+ break;
+ }
+ switch (p1->sig) {
+ case SIG_PRI_LIB_HANDLE_CASES:
+ q931c1 = ((struct sig_pri_chan *) (p1->sig_pvt))->call;
+ break;
+ default:
+ q931c1 = NULL;
+ break;
+ }
+ if (q931c0 && q931c1) {
+ pri_channel_bridge(q931c0, q931c1);
+ }
+ ast_mutex_unlock(&p0->pri->lock);
+ }
}
#endif
More information about the asterisk-commits
mailing list