[asterisk-dev] [Code Review] 4336: app_dial: Don't publish DialEnd events twice if GOSUB_RESULT or MACRO_RESULT return an unexpected value

Matt Jordan reviewboard at asterisk.org
Wed Jan 14 12:07:12 CST 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4336/
-----------------------------------------------------------

(Updated Jan. 14, 2015, 12:07 p.m.)


Review request for Asterisk Developers.


Changes
-------

Addressed Richard's points.

Note that I took a pessimistic view of the world here, and am quite defensive with the logic on whether or not a DialEnd event needs to be raised. This is for two reasons:
(1) The Dial code is long, sequential, and filled with blocks that can easily have additional logic inserted where you would not expect. Hence, everyone check that they should raise the DialEnd event before doing so.
(2) Multiple DialEnd events are very, very, very, very bad.


Bugs: ASTERISK-24682
    https://issues.asterisk.org/jira/browse/ASTERISK-24682


Repository: Asterisk


Description
-------

The Dial application has some interesting options with the mid-call Macro (M) and GoSub (U) options. If the MACRO_RESULT/GOSUB_RESULT returns specific values, the Dial application will take some action upon the channels involved in the dial operation (such as hanging up a particular party, etc.) The Dial application ensures that a Stasis message is published in the event that MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial operation, so that there is a corresponding DialEnd event published in AMI/ARI for the DialBegin event that preceeded it.

A bug exists where that same DialEnd event will be published on Stasis even if the value returned in MACRO_RESULT/GOSUB_RESULT is not one that the Dial application cares about. This causes two DialEnd events to be published - one with the MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is all sorts of wrong.

This patch fixes the bug by ensuring that we only publish a DialEnd message to Stasis if the Dial application's mid-call Macro/GoSub returns something that Dial cares about.


Diffs (updated)
-----

  /branches/13/apps/app_dial.c 430607 

Diff: https://reviewboard.asterisk.org/r/4336/diff/


Testing
-------

See https://reviewboard.asterisk.org/r/4337 for tests.


Thanks,

Matt Jordan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20150114/8bd46161/attachment.html>


More information about the asterisk-dev mailing list