diff options
author | Richard Mudgett <rmudgett@digium.com> | 2016-03-28 18:10:40 -0500 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2016-03-30 16:36:20 -0500 |
commit | 53f63ad7704b1b1f2b1465a23f89900266fc8115 (patch) | |
tree | 7c8bc907541ccdf1bd39cc38f8f0b4bc3897e3be /res/stasis/control.h | |
parent | 23d2a561d55bc226414dc839544138d77b49adfa (diff) |
res_stasis: Fix crash on a hanging up channel.
* Give the struct stasis_app_control ao2 object a ref to the channel held
in the object. Now the channel will still be around if a thread needs to
post a stasis message instead of crash because the topic was destroyed.
* Moved stopping any lingering silence generator out of the struct
stasis_app_control destructor and made it a part of exiting the Stasis
application. Who knows which thread the destructor will be called under
so it cannot affect the channel's silence generator. Not only was the
channel unprotected when the silence generator was stopped, stasis may no
longer even control the channel.
ASTERISK-25882
Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4
Diffstat (limited to 'res/stasis/control.h')
-rw-r--r-- | res/stasis/control.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/res/stasis/control.h b/res/stasis/control.h index a139f82e4..d053a35f7 100644 --- a/res/stasis/control.h +++ b/res/stasis/control.h @@ -108,5 +108,13 @@ int control_add_channel_to_bridge( struct stasis_app_control *control, struct ast_channel *chan, void *obj); +/*! + * \brief Stop playing silence to a channel right now. + * \since 13.9.0 + * + * \param control The control for chan + */ +void control_silence_stop_now(struct stasis_app_control *control); + #endif /* _ASTERISK_RES_STASIS_CONTROL_H */ |