Stasis: Fix StasisEnd message ordering
authorKinsey Moore <kmoore@digium.com>
Thu, 13 Nov 2014 15:46:48 +0000 (15:46 +0000)
committerKinsey Moore <kmoore@digium.com>
Thu, 13 Nov 2014 15:46:48 +0000 (15:46 +0000)
commit74e706878b4528e7d6db26e129f2f0d7346dbf0b
tree94d34a5f410a76883eade45d7d7e5392f02dd31a
parentcc4c396647222acecd2e8bc1bc1bdc859899c038
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
include/asterisk/stasis.h
include/asterisk/stasis_app.h
res/res_stasis.c
res/stasis/app.c
res/stasis/app.h
res/stasis/stasis_bridge.c