aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_dahdi.c
diff options
context:
space:
mode:
authorrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-27 00:55:12 +0000
committerrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-27 00:55:12 +0000
commit6bd4fd8f55ee927dcbf66b41027e08e1af7371f3 (patch)
treee1df450c90b4da763da74b1d956b5327e11afddc /channels/chan_dahdi.c
parent9347e0d2844c3bb6602a8dba5bc83e5d1b4b9195 (diff)
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: http://svn.digium.com/svn/asterisk/branches/1.4@203908 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r--channels/chan_dahdi.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 46bc9ccec..d10ddb905 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -2463,15 +2463,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);