From e91caf9b072efc209e752edcb767538da61d1cc6 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Fri, 20 Aug 2010 15:39:25 +0000 Subject: Merged revisions 283050 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r283050 | rmudgett | 2010-08-20 10:35:38 -0500 (Fri, 20 Aug 2010) | 36 lines Merged revisions 283049 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r283049 | rmudgett | 2010-08-20 10:31:03 -0500 (Fri, 20 Aug 2010) | 29 lines Merged revisions 283048 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r283048 | rmudgett | 2010-08-20 10:24:36 -0500 (Fri, 20 Aug 2010) | 22 lines Q931 - Sending PROGRESS after sending ALERTING is a protocol error The PRI layer in chan_dadhi will check if a PROGRESS message has already been sent, and not allow sending another (although that is technically allowed by the Q931 spec), however it does not protect against sending an ALERTING and then sending a PROGRESS message, which is a violation of the specification. Most switches don't seem to care too deeply about this, but some do, and will disconnect the call when receiving this invalid sequence. Protocol specification reference: T-REC-Q.931-199805-I page 223, "Figure A.5/Q.931 -- Overview protocol control (network side) point-point (sheet 3 of 8)" (closes issue #17874) Reported by: nic_bellamy Patches: asterisk-1.4-r282537_no-progress-after-alerting.patch uploaded by nic bellamy (license 299) asterisk-1.6.2-r282537_no-progress-after-alerting.patch uploaded by nic bellamy (license 299) asterisk-trunk-r282537_no-progress-after-alerting.patch uploaded by nic bellamy (license 299) ........ ................ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@283051 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/sig_pri.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'channels') diff --git a/channels/sig_pri.c b/channels/sig_pri.c index 1b493e114..c42799624 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -6329,7 +6329,7 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi case AST_CONTROL_PROGRESS: ast_debug(1,"Received AST_CONTROL_PROGRESS on %s\n",chan->name); sig_pri_set_digital(p, 0); /* Digital-only calls isn't allowing any inband progress messages */ - if (!p->progress && p->pri && !p->outgoing && !p->no_b_channel) { + if (!p->progress && !p->alerting && p->pri && !p->outgoing && !p->no_b_channel) { if (p->pri->pri) { if (!pri_grab(p, p->pri)) { #ifdef HAVE_PRI_PROG_W_CAUSE -- cgit v1.2.3