[Home]

Summary:ASTERISK-11560: Why Asterisk replies with "486 Busy Here" if it receives a "603 Decline"?
Reporter:Iñaki Baz Castillo (ibc)Labels:
Date Opened:2008-03-03 06:13:17.000-0600Date Closed:2011-06-07 14:08:01
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Channels/chan_sip/Interoperability
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:If Asterisk calls a phone and receives a "603 Decline" from it, it replies a "486 Busy Here" to the caller, why?

It makes more sense to reply with a "480 Temporary Unavailable".
Also there is a draft about this issue to propose a new response code:
 441: Decline
(instead of a global "603: Decline"):
 http://tools.ietf.org/html/draft-worley-6xx-considered-harmful

I've tryed and in version 1.4.15, Asterisk replies with "403 Forbidden" if it receives a "603 Decline" from a phone. Afortunatelly this terrible error seems to be "semi"-solved in later versions ;)
Comments:By: Joshua C. Colp (jcolp) 2008-03-03 09:09:14.000-0600

Please post a complete console output with sip debug so I can see some extra headers that Asterisk adds.

By: Iñaki Baz Castillo (ibc) 2008-03-05 04:18:44.000-0600

I paste the full console output. As yuocan see the most important is that after "603 Decline" Asterisk says:

   -- SIP/201-0820b808 is busy
 == Everyone is busy/congested at this time (1:1/0/0)
   -- Auto fallthrough, channel 'SIP/200-0820d3c8' status is 'BUSY'

<--- Transmitting (NAT) to 222.111.235.18:5060 --->
SIP/2.0 486 Busy Here
Via: SIP/2.0/UDP 192.168.1.58;branch=z9hG4bKxcozppdp;received=222.111.235.18;rport=5060
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
To: <sip:201@asterisk-svn.domain.es>;tag=as06f97034
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 766 INVITE
User-Agent: Asterisk SVN trunk
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces, timer
Content-Length: 0
X-Asterisk-HangupCause: Call Rejected
X-Asterisk-HangupCauseCode: 21




Full trace/log:



<--- SIP read from UDP://222.111.235.18:5060 --->
INVITE sip:201@asterisk-svn.domain.es SIP/2.0
Via: SIP/2.0/UDP 192.168.1.58;rport;branch=z9hG4bKiyhcisjy
Max-Forwards: 70
To: <sip:201@asterisk-svn.domain.es>
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 765 INVITE
Contact: <sip:200@192.168.1.58>
Content-Type: application/sdp
Allow: INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGE
Supported: replaces,norefersub,100rel
User-Agent: Twinkle/1.2alpha2
Content-Length: 308

v=0
o=twinkle 175148285 1275464401 IN IP4 192.168.1.58
s=-
c=IN IP4 192.168.1.58
t=0 0
m=audio 8000 RTP/AVP 98 97 8 0 3 101
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
<------------->
--- (13 headers 14 lines) ---
 == Using SIP RTP CoS mark 5
Sending to 222.111.235.18 : 5060 (NAT)
Using INVITE request as basis request - hyztqyrbakbzmbc@ibc.domain.lan
Found user '200' for '200'
asterisk-svn*CLI>
<--- Reliably Transmitting (NAT) to 222.111.235.18:5060 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.58;branch=z9hG4bKiyhcisjy;received=222.111.235.18;rport=5060
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
To: <sip:201@asterisk-svn.domain.es>;tag=as7a3c6b91
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 765 INVITE
User-Agent: Asterisk SVN trunk
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="3f3a0a64"
Content-Length: 0


<------------>
Scheduling destruction of SIP dialog 'hyztqyrbakbzmbc@ibc.domain.lan' in 32000 ms (Method: INVITE)
asterisk-svn*CLI>
<--- SIP read from UDP://222.111.235.18:5060 --->
ACK sip:201@asterisk-svn.domain.es SIP/2.0
Via: SIP/2.0/UDP 192.168.1.58;rport;branch=z9hG4bKiyhcisjy
Max-Forwards: 70
To: <sip:201@asterisk-svn.domain.es>;tag=as7a3c6b91
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 765 ACK
User-Agent: Twinkle/1.2alpha2
Content-Length: 0

<------------->
--- (9 headers 0 lines) ---
asterisk-svn*CLI>
<--- SIP read from UDP://222.111.235.18:5060 --->
INVITE sip:201@asterisk-svn.domain.es SIP/2.0
Via: SIP/2.0/UDP 192.168.1.58;rport;branch=z9hG4bKxcozppdp
Max-Forwards: 70
To: <sip:201@asterisk-svn.domain.es>
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 766 INVITE
Contact: <sip:200@192.168.1.58>
Content-Type: application/sdp
Authorization: Digest username="200",realm="asterisk",nonce="3f3a0a64",uri="sip:201@asterisk-svn.domain.es",response="685a91fb5a47c1260db643c320144ffa",algorithm=MD5
Allow: INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGE
Supported: replaces,norefersub,100rel
User-Agent: Twinkle/1.2alpha2
Content-Length: 308

v=0
o=twinkle 175148285 1275464401 IN IP4 192.168.1.58
s=-
c=IN IP4 192.168.1.58
t=0 0
m=audio 8000 RTP/AVP 98 97 8 0 3 101
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
<------------->
--- (14 headers 14 lines) ---
Sending to 222.111.235.18 : 5060 (NAT)
Using INVITE request as basis request - hyztqyrbakbzmbc@ibc.domain.lan
Found user '200' for '200'
Found RTP audio format 98
Found RTP audio format 97
Found RTP audio format 8
Found RTP audio format 0
Found RTP audio format 3
Found RTP audio format 101
Peer audio RTP is at port 192.168.1.58:8000
Found audio description format speex for ID 98
Found audio description format speex for ID 97
Found audio description format PCMA for ID 8
Found audio description format PCMU for ID 0
Found audio description format GSM for ID 3
Found audio description format telephone-event for ID 101
Got unsupported a:fmtp in SDP offer
Capabilities: us - 0x8000e (gsm|ulaw|alaw|h263), peer - audio=0x20e (gsm|ulaw|alaw|speex)/video=0x0 (nothing)/text=0x0 (nothing), combined - 0xe (gsm|ulaw|alaw)
Non-codec capabilities (dtmf): us - 0x1 (telephone-event), peer - 0x1 (telephone-event), combined - 0x1 (telephone-event)
Peer audio RTP is at port 192.168.1.58:8000
Looking for 201 in desde-usuarios (domain asterisk-svn.domain.es)
list_route: hop: <sip:200@192.168.1.58>

<--- Transmitting (NAT) to 222.111.235.18:5060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.1.58;branch=z9hG4bKxcozppdp;received=222.111.235.18;rport=5060
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
To: <sip:201@asterisk-svn.domain.es>
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 766 INVITE
User-Agent: Asterisk SVN trunk
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces, timer
Contact: <sip:201@88.99.0.111:5060>
Content-Length: 0


<------------>
   -- Executing [201@desde-usuarios:1] Dial("SIP/200-0820d3c8", "SIP/201,30,tT") in new stack
 == Using SIP RTP CoS mark 5
Audio is at 88.99.0.111 port 10322
Adding codec 0x4 (ulaw) to SDP
Adding codec 0x2 (gsm) to SDP
Adding codec 0x8 (alaw) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (NAT) to 222.111.235.18:5060:
INVITE sip:201@192.168.1.58 SIP/2.0
Via: SIP/2.0/UDP 88.99.0.111:5060;branch=z9hG4bK73c45c44;rport
Max-Forwards: 70
From: "Twinkleeeee" <sip:200@88.99.0.111:5060>;tag=as7ebe1ea6
To: <sip:201@192.168.1.58>
Contact: <sip:200@88.99.0.111:5060>
Call-ID: 3d70edc44c1c5d6f2f4744e1467b78bb@88.99.0.111
CSeq: 102 INVITE
User-Agent: Asterisk SVN trunk
Date: Wed, 05 Mar 2008 10:17:32 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 317

v=0
o=root 620478896 620478896 IN IP4 88.99.0.111
s=Asterisk PBX SVN-trunk-r101271M
c=IN IP4 88.99.0.111
t=0 0
m=audio 10322 RTP/AVP 0 3 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

---
   -- Called 201
asterisk-svn*CLI>
<--- SIP read from UDP://222.111.235.18:5060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 88.99.0.111:5060;rport=5060;branch=z9hG4bK73c45c44
To: <sip:201@192.168.1.58>
From: "Twinkleeeee" <sip:200@88.99.0.111:5060>;tag=as7ebe1ea6
Call-ID: 3d70edc44c1c5d6f2f4744e1467b78bb@88.99.0.111
CSeq: 102 INVITE
Server: Twinkle/1.2alpha2
Content-Length: 0

<------------->
--- (8 headers 0 lines) ---

<--- SIP read from UDP://222.111.235.18:5060 --->
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 88.99.0.111:5060;rport=5060;branch=z9hG4bK73c45c44
To: <sip:201@192.168.1.58>;tag=udoed
From: "Twinkleeeee" <sip:200@88.99.0.111:5060>;tag=as7ebe1ea6
Call-ID: 3d70edc44c1c5d6f2f4744e1467b78bb@88.99.0.111
CSeq: 102 INVITE
Server: Twinkle/1.2alpha2
Content-Length: 0

<------------->
--- (8 headers 0 lines) ---
   -- SIP/201-0820b808 is ringing

<--- Transmitting (NAT) to 222.111.235.18:5060 --->
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.1.58;branch=z9hG4bKxcozppdp;received=222.111.235.18;rport=5060
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
To: <sip:201@asterisk-svn.domain.es>;tag=as06f97034
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 766 INVITE
User-Agent: Asterisk SVN trunk
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces, timer
Contact: <sip:201@88.99.0.111:5060>
Content-Length: 0


<------------>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
asterisk-svn*CLI>
<--- SIP read from UDP://222.111.235.18:5060 --->
SIP/2.0 603 Decline
Via: SIP/2.0/UDP 88.99.0.111:5060;rport=5060;branch=z9hG4bK73c45c44
To: <sip:201@192.168.1.58>;tag=udoed
From: "Twinkleeeee" <sip:200@88.99.0.111:5060>;tag=as7ebe1ea6
Call-ID: 3d70edc44c1c5d6f2f4744e1467b78bb@88.99.0.111
CSeq: 102 INVITE
Server: Twinkle/1.2alpha2
Content-Length: 0

<------------->
--- (8 headers 0 lines) ---
   -- Got SIP response 603 "Decline" back from 222.111.235.18
Transmitting (NAT) to 222.111.235.18:5060:
ACK sip:201@192.168.1.58 SIP/2.0
Via: SIP/2.0/UDP 88.99.0.111:5060;branch=z9hG4bK73c45c44;rport
Max-Forwards: 70
From: "Twinkleeeee" <sip:200@88.99.0.111:5060>;tag=as7ebe1ea6
To: <sip:201@192.168.1.58>;tag=udoed
Contact: <sip:200@88.99.0.111:5060>
Call-ID: 3d70edc44c1c5d6f2f4744e1467b78bb@88.99.0.111
CSeq: 102 ACK
User-Agent: Asterisk SVN trunk
Content-Length: 0


---
   -- SIP/201-0820b808 is busy
 == Everyone is busy/congested at this time (1:1/0/0)
   -- Auto fallthrough, channel 'SIP/200-0820d3c8' status is 'BUSY'

<--- Transmitting (NAT) to 222.111.235.18:5060 --->
SIP/2.0 486 Busy Here
Via: SIP/2.0/UDP 192.168.1.58;branch=z9hG4bKxcozppdp;received=222.111.235.18;rport=5060
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
To: <sip:201@asterisk-svn.domain.es>;tag=as06f97034
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 766 INVITE
User-Agent: Asterisk SVN trunk
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces, timer
Content-Length: 0
X-Asterisk-HangupCause: Call Rejected
X-Asterisk-HangupCauseCode: 21


<------------>
asterisk-svn*CLI>
<--- SIP read from UDP://222.111.235.18:5060 --->
ACK sip:201@asterisk-svn.domain.es SIP/2.0
Via: SIP/2.0/UDP 192.168.1.58;rport;branch=z9hG4bKxcozppdp
Max-Forwards: 70
To: <sip:201@asterisk-svn.domain.es>;tag=as06f97034
From: "Twinkleeeee" <sip:200@asterisk-svn.domain.es>;tag=ypyfu
Call-ID: hyztqyrbakbzmbc@ibc.domain.lan
CSeq: 766 ACK
Authorization: Digest username="200",realm="asterisk",nonce="3f3a0a64",uri="sip:201@asterisk-svn.domain.es",response="685a91fb5a47c1260db643c320144ffa",algorithm=MD5
User-Agent: Twinkle/1.2alpha2
Content-Length: 0

<------------->
--- (10 headers 0 lines) ---
Really destroying SIP dialog '3d70edc44c1c5d6f2f4744e1467b78bb@88.99.0.111' Method: INVITE
Really destroying SIP dialog 'hyztqyrbakbzmbc@ibc.domain.lan' Method: ACK

By: Joshua C. Colp (jcolp) 2008-03-05 11:49:47.000-0600

This is a dialplan configuration issue. It is falling through and signalling back busy, as that is what app_dial returns in DIALSTATUS. If you want to pass back a more accurate cause use the Hangup application with a specific cause code. To get the cause code returned by the dial device use ${HANGUPCAUSE}. If you want to see what the values map to it is documented above hangup_cause2sip.