]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 203909 via svnmerge from
authorRichard Mudgett <rmudgett@digium.com>
Sat, 27 Jun 2009 01:18:48 +0000 (01:18 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Sat, 27 Jun 2009 01:18:48 +0000 (01:18 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r203909 | rmudgett | 2009-06-26 20:07:52 -0500 (Fri, 26 Jun 2009) | 23 lines

  Merged revisions 203908 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r203908 | rmudgett | 2009-06-26 19:55:12 -0500 (Fri, 26 Jun 2009) | 16 lines

    The ISDN CPE side should not exclusively pick B channels normally.

    Before this patch, Asterisk unconditionally picked B channels exclusively
    on the CPE side and normally allowed alternative B channels on the network
    side.  Now Asterisk does the opposite.

    Reasons for the CPE side to normally not pick B channels exclusively:
    *  For CPE point-to-multipoint mode (i.e. phone side), the CPE side does
    not have enough information to exclusively pick B channels.  (There may be
    other devices on the line.)
    *  Q.931 gives preference to the network side picking B channels.
    *  Some telcos require the CPE side to not pick B channels exclusively.

    (closes issue #14383)
    Reported by: mbrancaleoni
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@203918 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_dahdi.c

index d41e904839f8be412fa7ea1abd7da0b59c82b2ea..bc2ff640c03e0fac182a8dd0146c642bb30c3eb6 100644 (file)
@@ -2937,15 +2937,12 @@ static int dahdi_call(struct ast_channel *ast, char *rdest, int timeout)
                        pri_set_crv(p->pri->pri, p->call, p->channel, 0);
                }
                p->digital = IS_DIGITAL(ast->transfercapability);
-               /* Add support for exclusive override */
-               if (p->priexclusive)
+
+               /* Should the picked channel be used exclusively? */
+               if (p->priexclusive || p->pri->nodetype == PRI_NETWORK) {
                        exclusive = 1;
-               else {
-               /* otherwise, traditional behavior */
-                       if (p->pri->nodetype == PRI_NETWORK)
-                               exclusive = 0;
-                       else
-                               exclusive = 1;
+               } else {
+                       exclusive = 0;
                }
                
                pri_sr_set_channel(sr, p->bearer ? PVT_TO_CHANNEL(p->bearer) : PVT_TO_CHANNEL(p), exclusive, 1);