[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
Fri Jan 16 21:03:16 CST 2015


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

(Updated Jan. 16, 2015, 9:03 p.m.)


Review request for Asterisk Developers.


Changes
-------

More or less addressed Richard's finding.

I couldn't bring myself to use res9. I just can't. As such, the Macro/GoSub now have their own result variables, and set res appropriately if things fail. This prevents previous values of res from potentially affecting the logic (despite it not doing so previously).

This code is in desperate need of a refactoring, but we've actually already done that. It's called the Dial API. Oh well.


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 430751 

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/20150117/667f49fd/attachment.html>


More information about the asterisk-dev mailing list