summaryrefslogtreecommitdiff
path: root/channels/sig_pri.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-04-03 20:20:09 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-04-03 20:20:09 +0000
commit79818112fdc9190e4dccf632d403d35343785bdf (patch)
treef7d0f06ecfe95a74d2b02e615d13625f008d14b2 /channels/sig_pri.c
parent1cafccdf877f623bee5d4eb3c32c7fe4aa605678 (diff)
chan_dahdi: Add inband_on_proceeding compatibility option.
The new inband_on_proceeding option causes Asterisk to assume inband audio may be present when a PROCEEDING message is received. Q.931 Section 5.1.2 says the network cannot assume that the CPE side has attached to the B channel at this time without explicitly sending the progress indicator ie informing the CPE side to attach to the B channel for audio. However, some non-compliant ISDN switches send a PROCEEDING without the progress indicator ie indicating inband audio is available and assume that the CPE device has connected the media path for listening to ringback and other messages. ASTERISK-17834 which causes this issue was dealing with a non-compliant network switch. (closes issue ASTERISK-21151) Reported by: Gianluca Merlo Tested by: rmudgett ........ Merged revisions 384685 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 384689 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@384696 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/sig_pri.c')
-rw-r--r--channels/sig_pri.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index dba005214..353b7f39b 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -6752,9 +6752,11 @@ static void *pri_dchannel(void *vpri)
/* Bring voice path up */
pri_queue_control(pri, chanpos, AST_CONTROL_PROGRESS);
pri->pvts[chanpos]->progress = 1;
+ sig_pri_set_dialing(pri->pvts[chanpos], 0);
sig_pri_open_media(pri->pvts[chanpos]);
+ } else if (pri->inband_on_proceeding) {
+ sig_pri_set_dialing(pri->pvts[chanpos], 0);
}
- sig_pri_set_dialing(pri->pvts[chanpos], 0);
sig_pri_unlock_private(pri->pvts[chanpos]);
break;
case PRI_EVENT_FACILITY: