[asterisk-dev] asterisk sending connects when it shouldn't (is
there a q931-INFORMATION equivalent in IAX2 ?)
Simone Cittadini
mymailforlists at gmail.com
Mon Jul 17 05:46:53 MST 2006
When asterisk receives those messages you hear when calling an
unreacheable cellular phone it sends a 'connect' over the terminating
PRI line (digium TE410P), making the call seen as billed from customer's
perspective.
I don't know if this behaviour is a bug or something I can resolve with
some fine tuning, so I'm sending to both lists.
this is the layout of machines :
|gsm gateway| <- sip -> |asterisk client| <- iax2 -> |asterisk server|
<- zap -> pri lines (nortel ?)
that's roughly the extension on the server :
exten => _X.,1,AGI(agi://127.0.0.1:54321/SomeAgiHere?someArgumentsHere)
exten => _X.,n,GotoIf($["${CALLABLE}"="TRUE"]?chkmax:hangup)
exten => _X.,n(chkmax),Set(GROUP()=${TECH_PRE})
exten => _X.,n,GotoIf($[${GROUP_COUNT(${TECH_PRE})} >=
${MAX_CALLS}]?hangup:dial)
exten => _X.,n(dial),Dial(${STR_DIAL})
exten => _X.,n(hangup),Hangup
exten => h,1,Set(CDR(userfield)=${USERFIELD}-${HANGUPCAUSE})
Here the provider's trace of a call answered by asterisk :
/HDLU 4/Port
=== LAPD ===
--- ADDRESS ---
SAPI : 0 = call control procedures
CR : ......1.
EA0 : .......0
TEI : 0 = non-automatic TEI assignment user equipment
EA1 : .......1
--- CONTROL ---
--- I FRAME ---
I FORMAT : .......0
N(S) : 86
P : .......0
N(R) : 31
=== ETSI ISDN ===
PROT DISC : 08h = Q.931 user-network call control message
LEN CALL R : 2
SPARE : 0
FLAG : 1....... = the message is sent to the side that
originates the call reference
CALL REF : 226
MESS TYPE : 07h = Connect
Here the complete trace :
/HDLU 4/Port
0 TEI: 0 CALL REF: 226 Setup '500' '[called number]'
0 TEI: 0 CALL REF: 226 Setup acknowledge
0 TEI: 0 CALL REF: 226 Call proceeding
0 TEI: 0 CALL REF: 226 Connect <== should not
0 TEI: 0 CALL REF: 226 Connect acknowledge
0 TEI: 0 CALL REF: 226 Disconnect 16 normal call clearing
0 TEI: 0 CALL REF: 226 Release
0 TEI: 0 CALL REF: 226 Release complete
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Here a trace from a correctly functioning non-voip system :
/HDLU 4/Port
0 TEI: 0 CALL REF: 246 Setup '500'
0 TEI: 0 CALL REF: 246 Setup acknowledge
0 TEI: 0 CALL REF: 246 Information 'c'
0 TEI: 0 CALL REF: 246 Information 'a'
0 TEI: 0 CALL REF: 246 Information 'l'
0 TEI: 0 CALL REF: 246 Information 'l'
0 TEI: 0 CALL REF: 246 Information 'e'
0 TEI: 0 CALL REF: 246 Information 'd'
0 TEI: 0 CALL REF: 246 Information 'n'
0 TEI: 0 CALL REF: 246 Information 'u'
0 TEI: 0 CALL REF: 246 Information 'm'
0 TEI: 0 CALL REF: 246 Information 'b'
0 TEI: 0 CALL REF: 246 Call proceeding
0 TEI: 0 CALL REF: 246 Progress
0 TEI: 0 CALL REF: 246 Progress
0 TEI: 0 CALL REF: 246 Disconnect 16 normal call clearing
0 TEI: 0 CALL REF: 246 Release
0 TEI: 0 CALL REF: 246 Release complete
On the asterisk client it seems that SIP correctly opens only a leg of
the call :
asterisk : 102 invite
<- 100 Trying
<- 200 OK
asterisk : ACK (now I hear the audio)
(I hangup)
asterisk : BYE
<- 200 OK
Destroying call 'blabla'@ip
(with a normally answered call I see 183 Session progress instead of the
first 200 while ringing, and the the destroyed calls are two)
the iax debug : (still talking about the call that shouldn't send the
connect on isdn line)
-- Accepting AUTHENTICATED call from IP:
> requested format = alaw,
> requested prefs = (),
> actual format = alaw,
> host prefs = (alaw),
> priority = mine
-- Executing Dial("IAX2/IP:4569-2", "SIP/number at host") in new stack
-- Called number at host
Tx-Frame Retry[000] -- OSeqno: 001 ISeqno: 002 Type: IAX Subclass:
ACCEPT
Timestamp: 00014ms SCall: 00002 DCall: 00188 [IP:4569]
FORMAT : 8
astegateway4*CLI>
Rx-Frame Retry[ No] -- OSeqno: 002 ISeqno: 002 Type: IAX Subclass: ACK
Timestamp: 00014ms SCall: 00188 DCall: 00002 [IP:4569]
Rx-Frame Retry[ No] -- OSeqno: 002 ISeqno: 002 Type: VOICE Subclass: 8
Timestamp: 00090ms SCall: 00188 DCall: 00002 [IP:4569]
Tx-Frame Retry[-01] -- OSeqno: 002 ISeqno: 003 Type: IAX Subclass: ACK
Timestamp: 00090ms SCall: 00002 DCall: 00188 [IP:4569]
-- SIP/gateway4-20e0 answered IAX2/82.113.204.70:4569-2
Tx-Frame Retry[000] -- OSeqno: 002 ISeqno: 003 Type: CONTROL Subclass:
ANSWER
Timestamp: 04698ms SCall: 00002 DCall: 00188 [IP:4569]
Rx-Frame Retry[ No] -- OSeqno: 003 ISeqno: 003 Type: IAX Subclass: ACK
Timestamp: 04698ms SCall: 00188 DCall: 00002 [IP:4569]
Tx-Frame Retry[000] -- OSeqno: 003 ISeqno: 003 Type: VOICE Subclass: 8
Timestamp: 04764ms SCall: 00002 DCall: 00188 [IP:4569]
Rx-Frame Retry[ No] -- OSeqno: 003 ISeqno: 004 Type: IAX Subclass: ACK
Timestamp: 04764ms SCall: 00188 DCall: 00002 [IP:4569]
Rx-Frame Retry[ No] -- OSeqno: 003 ISeqno: 004 Type: IAX Subclass:
HANGUP
Timestamp: 07167ms SCall: 00188 DCall: 00002 [IP:4569]
CAUSE CODE : 16
Is maybe that ANSWER translated to a CONNECT when passing to the zap
channel ?
More information about the asterisk-dev
mailing list