[Home]

Summary:ASTERISK-01677: When making outgoing call over PRI, Asterisk sends PROCEEDING and PROGRESS messages together with SETUP
Reporter:Paul Cadach (pcadach)Labels:
Date Opened:2004-05-22 11:38:53Date Closed:2008-01-15 14:55:51.000-0600
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:We have next connection scheme: VoIP call -> Asterisk1 -> H323 to Cisco GW -> PRI to Asterisk 2 -> PRI to PSTN. When a call arrived at Asterisk2 from one PRI, it sends SETUP to other PRI, but immediately tries to bring up speech channel with PROCEEDING/PROGRESS messages, without waiting for outstanding PROCEEDING/SETUP ACK.

****** ADDITIONAL INFORMATION ******

Call trace (pri debug span 4, where PSTN side connected):
> Protocol Discriminator: Q.931 (8)  len=53
> Call Ref: len= 2 (reference 4/0x4) (Originator)
> Message type: SETUP (5)
> Bearer Capability (len= 3) [ Ext: 1  Q.931 Std: 0  Info transfer capability: Speech (0)
>                              Ext: 1  Trans mode/rate: 64kbps, circuit-mode (16)
>                              Ext: 1  User information layer 1: A-Law (35)
> Channel ID (len= 5) [ Ext: 1  IntID: Implicit, PRI Spare: 0, Exclusive Dchan: 0
>                        ChanSel: Reserved
>                       Ext: 1  Coding: 0   Number Specified   Channel Type: 3
>                       Ext: 1  Channel: 1 ]
> Display (len=12) [ > Display (len=12) [ 1> Display (len=12) [ 1P> Display (len=12) [ 1Pa> Display (len=12) [ 1Pau> Display (len=12) [ 1Paul> Display (len=12) [ 1Paul > Display (len=12) [ 1Paul C> Display (len=12) [ 1Paul Ca> Display (len=12) [ 1Paul Cad> Display (len=12) [ 1Paul Cada> Display (len=12) [ 1Paul Cadac> Display (len=12) [ 1Paul Cadach> Display (len=12) [ 1Paul Cadach ]
> Calling Number (len=14) [ Ext: 0  TON: Subscriber Number (4)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1)
> Called Number (len= 9) [ Ext: 1  TON: Subscriber Number (4)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1) '248753' ]
> Sending Complete (len= 0)
> Protocol Discriminator: Q.931 (8)  len=10
> Call Ref: len= 2 (reference 4/0x4) (Originator)
> Message type: CALL PROCEEDING (2)
> Channel ID (len= 5) [ Ext: 1  IntID: Implicit, PRI Spare: 0, Exclusive Dchan: 0
>                        ChanSel: Reserved
>                       Ext: 1  Coding: 0   Number Specified   Channel Type: 3
>                       Ext: 1  Channel: 1 ]
> Protocol Discriminator: Q.931 (8)  len=9
> Call Ref: len= 2 (reference 4/0x4) (Originator)
> Message type: PROGRESS (3)
> Progress Indicator (len= 2) [ Ext: 1  Coding: CCITT (ITU) standard (0) 0: 0   Location: Private network serving the local user (1)
>                               Ext: 1  Progress Description: Inband information or appropriate pattern now available. (8) ]
< Protocol Discriminator: Q.931 (8)  len=10
< Call Ref: len= 2 (reference 32772/0x8004) (Terminator)
< Message type: CALL PROCEEDING (2)
< Channel ID (len= 5) [ Ext: 1  IntID: Implicit, PRI Spare: 0, Exclusive Dchan: 0
<                        ChanSel: Reserved
<                       Ext: 1  Coding: 0   Number Specified   Channel Type: 3
<                       Ext: 1  Channel: 1 ]
-- Processing IE 24 (Channel Identification)
> Protocol Discriminator: Q.931 (8)  len=12
> Call Ref: len= 2 (reference 4/0x4) (Originator)
> Message type: STATUS (125)
> Cause (len= 2) [ Ext: 1  Coding: CCITT (ITU) standard (0) 0: 0   Location: User (0)
>                  Ext: 1  Cause: Wrong message (98), class = Protocol Error (6) ]
> Call State (len= 1) [ Ext: 0  Coding: CCITT (ITU) standard (0) Call state: Incoming Call Proceeding (9)
< Protocol Discriminator: Q.931 (8)  len=13
< Call Ref: len= 2 (reference 32772/0x8004) (Terminator)
< Message type: STATUS (125)
< Cause (len= 3) [ Ext: 1  Coding: CCITT (ITU) standard (0) 0: 0   Location: Public network serving the local user (2)
<                  Ext: 1  Cause: Message not compatible with call state (101), class = Protocol Error (6) ]
<              Cause data 0: 01 (1)
< Call State (len= 1) [ Ext: 0  Coding: CCITT (ITU) standard (0) Call state: Outgoing call  Proceeding (3)
-- Processing IE 8 (Cause)
-- Processing IE 20 (Call State)
< Protocol Discriminator: Q.931 (8)  len=13
< Call Ref: len= 2 (reference 32772/0x8004) (Terminator)
< Message type: DISCONNECT (69)
< Cause (len= 2) [ Ext: 1  Coding: CCITT (ITU) standard (0) 0: 0   Location: Public network serving the local user (2)
<                  Ext: 1  Cause: Message not compatible with call state (101), class = Protocol Error (6) ]
< Progress Indicator (len= 2) [ Ext: 1  Coding: CCITT (ITU) standard (0) 0: 0   Location: Public network serving the local user (2)
<                               Ext: 1  Progress Description: Inband information or appropriate pattern now available. (8) ]
-- Processing IE 8 (Cause)
-- Processing IE 30 (Progress Indicator)
   -- Channel 1, span 4 got hangup
Comments:By: Paul Cadach (pcadach) 2004-05-22 12:06:48

Fix found - don't bring audio path up on zt_write() for outgoing calls.
--- chan_zap.c.1        Sat May 22 22:45:55 2004
+++ chan_zap.c  Sat May 22 23:00:12 2004
@@ -3853,6 +3853,9 @@

#ifdef PRI_EVENT_PROCEEDING
       if (!p->proceeding && p->sig==SIG_PRI && p->pri) {
+               /* Don't bring voice channel on outgoing calls */
+               if (p->outgoing)
+                       return 0;
               if (p->pri->pri) {
                       if (!pri_grab(p, p->pri)) {
#ifdef PRI_PROGRESS

By: Mark Spencer (markster) 2004-05-22 14:52:26

Actually this was already fixed in CVS head, but is now fixed properly in CVS head.

By: Digium Subversion (svnbot) 2008-01-15 14:55:51.000-0600

Repository: asterisk
Revision: 3041

U   trunk/channels/chan_zap.c

------------------------------------------------------------------------
r3041 | markster | 2008-01-15 14:55:50 -0600 (Tue, 15 Jan 2008) | 2 lines

Obviously don't send alerting, progress, or proceeding on outbound calls (bug ASTERISK-1677)

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=3041