summaryrefslogtreecommitdiff
path: root/include/asterisk
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2014-11-13 15:44:28 +0000
committerKinsey Moore <kmoore@digium.com>2014-11-13 15:44:28 +0000
commit5013659972a4678ca7f6f64512ee9d5fc7172882 (patch)
treee032e77ff7f2f5cf78823015422dba84d8f0db06 /include/asterisk
parent153cfb4c2d5eef57651a7d1443e6b95878c1f9c7 (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 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@427789 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk')
-rw-r--r--include/asterisk/stasis.h11
-rw-r--r--include/asterisk/stasis_app.h5
2 files changed, 11 insertions, 5 deletions
diff --git a/include/asterisk/stasis.h b/include/asterisk/stasis.h
index b8dc4c845..4189513ac 100644
--- a/include/asterisk/stasis.h
+++ b/include/asterisk/stasis.h
@@ -221,6 +221,17 @@ struct stasis_message_sanitizer {
* \retval zero if the channel should remain in the message
*/
int (*channel_snapshot)(const struct ast_channel_snapshot *snapshot);
+
+ /*!
+ * \brief Callback which determines whether a channel should be sanitized from
+ * a message based on the channel
+ *
+ * \param chan The channel to be checked
+ *
+ * \retval non-zero if the channel should be left out of the message
+ * \retval zero if the channel should remain in the message
+ */
+ int (*channel)(const struct ast_channel *chan);
};
/*!
diff --git a/include/asterisk/stasis_app.h b/include/asterisk/stasis_app.h
index 2e5901cb6..e47275480 100644
--- a/include/asterisk/stasis_app.h
+++ b/include/asterisk/stasis_app.h
@@ -791,11 +791,6 @@ void stasis_app_unref(void);
struct stasis_message_sanitizer *stasis_app_get_sanitizer(void);
/*!
- * \brief Stasis message type for a StasisEnd event
- */
-struct stasis_message_type *ast_stasis_end_message_type(void);
-
-/*!
* \brief Indicate that this channel has had a StasisEnd published for it
*
* \param The channel that is exiting Stasis.