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
10-digiumphones
Richard Mudgett 15 years ago
parent 19898f33ce
commit e91caf9b07

@ -6329,7 +6329,7 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi
case AST_CONTROL_PROGRESS: case AST_CONTROL_PROGRESS:
ast_debug(1,"Received AST_CONTROL_PROGRESS on %s\n",chan->name); 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 */ 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 (p->pri->pri) {
if (!pri_grab(p, p->pri)) { if (!pri_grab(p, p->pri)) {
#ifdef HAVE_PRI_PROG_W_CAUSE #ifdef HAVE_PRI_PROG_W_CAUSE

Loading…
Cancel
Save