[asterisk-bugs] [JIRA] Closed: (ASTERISK-20352) Incorrect handling of SIP 484 Address incomplete
Matt Jordan (JIRA)
noreply at issues.asterisk.org
Tue Sep 4 09:35:08 CDT 2012
[ https://issues.asterisk.org/jira/browse/ASTERISK-20352?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matt Jordan closed ASTERISK-20352.
----------------------------------
Resolution: Not A Bug
> Incorrect handling of SIP 484 Address incomplete
> ------------------------------------------------
>
> Key: ASTERISK-20352
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-20352
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Channels/chan_sip/General
> Affects Versions: 1.8.15.0, 1.8.15.1
> Environment: Linux with asterisk 1.8.15.0
> SIP provider trunk
> SIP consummer trunk
> Reporter: Alain RICHARD
> Attachments: ASTERISK-20352 log
>
>
> In my setup, asterisk is used only as a SIP router between a provider and a consummer.
> On an incoming call (from the provider to the consumer), if the consumer trunk return a SIP 484 Address incomplete (q.850 code 28), the error is forwarded by asterisk to the provider trunk as a SIP 503 Service unavail, although the included q.850 code is 28.
> This is a violation of RFC 3398 :
> Response received Cause value in the REL
> ----------------- ----------------------
> ...
> 484 Address incomplete 28 Invalid Number Format (+)
> ...
> The problem is 100% reproductible. With the following code :
> sip.conf :
> [general]
> use_q850_reason=yes
> [provider]
> context=fromprovider
> [consumer]
> extensions.Conf :
> [fromprovider]
> exten => _123456,1,Nop(Call the consumer)
> same => n,Dial(SIP/${EXTEN}@comsumer)
> same => n,Verbose(2,DIALSTATUS = ${DIALSTATUS})
> same => n,Verbose(2,HANGUPCAUSE = ${HANGUPCAUSE})
> When the call is coming, I get the following process :
> 1 Call is ringging from provider to consumer
> 2 Consumer returns a SIP 484 Address incomplete
> 3 The verbose output shows : DIALSTATUS=CHANUNAVAIL, HANGUPCAUSE=28
> 4 asterisk returns to the provider : 503 Service unavailable, q.850 code=28
> So here it seams to be at least two error :
> - On step 4, the returned code for HANGUPCAUSE 28 to the provider is SIP 503 instead of SIP 484 as requested by RFC 3398.
> - On step 3, the DIAL app should have returned DIALSTATUS=CONGESTION instead of CHANUNAVAIL
> I have succeed to implement a counter measure :
> exten => _123456,1,Nop(Call the consumer)
> same => n,Dial(SIP/${EXTEN}@comsumer)
> same => n,Verbose(2,DIALSTATUS = ${DIALSTATUS})
> same => n,GotoIf($[${HANGUPCAUSE}=28] & $[${DIALSTATUS}!="CONGESTION"]?setcongestion:continue)
> same => n(setcongestion),Set(DIALSTATUS="CONGESTION")
> same => n,Verbose(2,DIALSTATUS = ${DIALSTATUS})
> same => n(continue),Verbose(2,HANGUPCAUSE = ${HANGUPCAUSE})
> In that case, the provider will receive the correct SIP response (SIP 484 and q.850 code 28).
> I don't know if the problem is within dial_app, chan_sip or on the generic handling of HANGUP CAUSE 28, but this violate the RFCs.
> Regards,
> Alain RICHARD
>
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the asterisk-bugs
mailing list