Merged revisions 203908 via svnmerge from
authorRichard Mudgett <rmudgett@digium.com>
Sat, 27 Jun 2009 01:07:52 +0000 (01:07 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Sat, 27 Jun 2009 01:07:52 +0000 (01:07 +0000)
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/trunk@203909 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/sig_pri.c

index f2eeb23..464dde2 100644 (file)
@@ -1811,15 +1811,12 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, char *rdest, i
        }
 
        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, PVT_TO_CHANNEL(p), exclusive, 1);