[asterisk-bugs] [JIRA] (ASTERISK-27280) Dial Application Q Option Unexpectedly Removing SIP cause Header

Paul Brooks (JIRA) noreply at issues.asterisk.org
Tue Sep 26 19:11:07 CDT 2017


     [ https://issues.asterisk.org/jira/browse/ASTERISK-27280?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul Brooks updated ASTERISK-27280:
-----------------------------------

    Attachment: asteriskq850queuetest.zip

I attached files related to a second test performed with the Q(NONE) option passed to the Dial Application. The configuration for the second test was slightly different than the first, and the results -- while they do also demonstrate that the Q(NONE) parameter appears broken -- are different from the first test.

The first test (first attachment) was a multiring scenario with the use of Local channels where the Q option passed to the Dial() step in the outer level, i.e. not overridden with the Dial() step that takes place in the Local channel.

The second test (second attachment) was also a mutliring scenario, but the Q option is specified in the inner level, i.e. specified with the Dial() step that takes in the Local channel. This second test, in contrast to the first, uses the Queue() application and its ringall strategy to establish the multring scenario.

As demonstrated in my previous posts, the first scenario shows that using the Q(NONE) option removes the wrong Reason: header in the Cancel Messages.

However, as demonstrated by this new test involving the Queue() application, the use of the Q(NONE) option in the Dial() application has no effect at all. The traces show that NEITHER Reason: header is removed from the SIP Cancel messages; in fact, it doesn't even change the value of the Q.850 reason code showing in the message.

Any effort to fix the functionality of the Q Parameter of the Dial() application should necessarily address its non functionality in all usable cases, including an outer Dial() command, an inner Dial() command within a Local Channel, and including the use of the Queue() application as illustrated in my second test. All relevant config files, logs and CLI capture are included in the attachment for the second test.

Thank you in advance for your attention to these details.


> Dial Application Q Option Unexpectedly Removing SIP cause Header
> ----------------------------------------------------------------
>
>                 Key: ASTERISK-27280
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-27280
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_dial, Channels/chan_pjsip
>    Affects Versions: 14.6.0
>         Environment: Debian 9.0  Stretch
>            Reporter: Paul Brooks
>            Assignee: Unassigned
>            Severity: Trivial
>         Attachments: asteriskq850queuetest.zip, asteriskQ850test.zip
>
>
> I am using Asterisk 14.6.0 with the PJSIP channel driver and I am interested in using Q(NONE) as a Dial option (parameter) in order to suppress the Reason:Q.850 header from appearing in the SIP Cancel messages that result from a call being answered elsewhere.
> Curiously, the addition of the Q parameter to the Dial Application, which appears to have occurred with the release of Asterisk 13, is not listed in the “New in 13” section of the Asterisk documentation. Nonetheless, starting with that version, the Q parameter appears as an option within the Dial application documentation, which explains that Q(cause) is used to specify the Q.850/Q.931 cause to send on unanswered channels when another channel answers the call. Of particular interest to me is the part of the documentation that says, “You can also specify 0 or NONE to send no cause”.
> The reason I want to suppress the Reason:Q.850 header from appearing in the Cancel messages is because several brands of SIP phones are getting confused by its presence and improperly logging these “answered elsewhere” calls as missed calls (Obi, Grandstream and Yaelink are some that I verified). With the old SIP channel driver the Reason:Q.850 did not appear in the Cancel messages and under this circumstance these phones behave well, not improperly logging the call.
> But the Q(NONE) option is not working for me. Please observe.
> Without Q(NONE) as a Dial parameter, what I see in the SIP Cancel message are two Reason headers (excerpt from Cancel message):
> CSeq: 6562 CANCEL
> Reason: Q.850;cause=26
> Reason: SIP;cause=200;text="Call completed elsewhere"
> Max-Forwards: 70
> User-Agent: Asterisk PBX 14.6.0
> Content-Length: 0
> However, with Q(NONE) specified as a Dial parameter, what I see in the SIP Cancel message is that the wrong Reason header appears to have been suppressed (excerpt from Cancel message):
> CSeq: 19076 CANCEL
> Reason: Q.850;cause=0
> Max-Forwards: 70
> User-Agent: Asterisk PBX 14.6.0
> Content-Length: 0
> Why is the Reason:SIP header missing in the Q(NONE) case? What I expected to see with the use of the Q(NONE) option was the removal of the Reason:Q.850 header and the continued presence of the Reason:SIP header.
> This seems to be a bug.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list