summaryrefslogtreecommitdiff
path: root/res/stasis/app.c
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2014-11-13 15:46:48 +0000
committerKinsey Moore <kmoore@digium.com>2014-11-13 15:46:48 +0000
commit74e706878b4528e7d6db26e129f2f0d7346dbf0b (patch)
tree94d34a5f410a76883eade45d7d7e5392f02dd31a /res/stasis/app.c
parentcc4c396647222acecd2e8bc1bc1bdc859899c038 (diff)
Stasis: Fix StasisEnd message ordering
This change corrects message ordering in cases where a channel-related message can be received after a Stasis/ARI application has received the StasisEnd message. The StasisEnd message was being passed to applications directly without waiting for the channel topic to empty. As a result of this fix, other bugs were also identified and fixed: * StasisStart messages were also being sent directly to apps and are now routed through the stasis message bus properly * Masquerade monitor datastores were being removed at the incorrect time in some cases and were causing StasisEnd messages to not be sent * General refactoring where necessary for the above * Unsubscription on StasisEnd timing changes to prevent additional messages from following the StasisEnd when they shouldn't A channel sanitization function pointer was added to reduce processing and AO2 lookups. Review: https://reviewboard.asterisk.org/r/4163/ ASTERISK-24501 #close Reported by: Matt Jordan ........ Merged revisions 427788 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged revisions 427789 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427790 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/stasis/app.c')
-rw-r--r--res/stasis/app.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/res/stasis/app.c b/res/stasis/app.c
index 9440cf1bd..cda1c045d 100644
--- a/res/stasis/app.c
+++ b/res/stasis/app.c
@@ -302,6 +302,10 @@ static void sub_default_handler(void *data, struct stasis_subscription *sub,
call_forwarded_handler(app, message);
}
+ if (stasis_message_type(message) == app_end_message_type()) {
+ app_end_message_handler(message);
+ }
+
/* By default, send any message that has a JSON representation */
json = stasis_message_to_json(message, stasis_app_get_sanitizer());
if (!json) {