diff options
author | Richard Mudgett <rmudgett@digium.com> | 2012-11-06 19:05:11 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2012-11-06 19:05:11 +0000 |
commit | 6ad0126425993bd9c9c73b0c05a52984cbcadc5d (patch) | |
tree | f070df191a27b220f3097e18ea17a9870ea666b6 /include | |
parent | 82dc21e0e1813b3f24099ad0c90918d95b39ff9d (diff) |
Fix stuck DTMF when bridge is broken.
When a bridge is broken by an AMI Redirect action or the ChannelRedirect
application, an in progress DTMF digit could be stuck sending forever.
* Made simulate a DTMF end event when a bridge is broken and a DTMF digit
was in progress.
(closes issue ASTERISK-20492)
Reported by: Jeremiah Gowdy
Patches:
bridge_end_dtmf-v3.patch.txt (license #6358) patch uploaded by Jeremiah Gowdy
Modified to jira_asterisk_20492_v1.8.patch
jira_asterisk_20492_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: rmudgett
Review: https://reviewboard.asterisk.org/r/2169/
........
Merged revisions 375964 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 375965 from http://svn.asterisk.org/svn/asterisk/branches/10
........
Merged revisions 375966 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@375967 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/channel.h | 4 | ||||
-rw-r--r-- | include/asterisk/features.h | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index fed032a3d..ce9ef7aa2 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -3835,6 +3835,10 @@ void ast_channel_macroexten_set(struct ast_channel *chan, const char *value); char ast_channel_dtmf_digit_to_emulate(const struct ast_channel *chan); void ast_channel_dtmf_digit_to_emulate_set(struct ast_channel *chan, char value); +char ast_channel_sending_dtmf_digit(const struct ast_channel *chan); +void ast_channel_sending_dtmf_digit_set(struct ast_channel *chan, char value); +struct timeval ast_channel_sending_dtmf_tv(const struct ast_channel *chan); +void ast_channel_sending_dtmf_tv_set(struct ast_channel *chan, struct timeval value); int ast_channel_amaflags(const struct ast_channel *chan); void ast_channel_amaflags_set(struct ast_channel *chan, int value); int ast_channel_epfd(const struct ast_channel *chan); diff --git a/include/asterisk/features.h b/include/asterisk/features.h index 1619d54c4..4f5561381 100644 --- a/include/asterisk/features.h +++ b/include/asterisk/features.h @@ -169,6 +169,18 @@ int ast_parking_ext_valid(const char *exten_str, struct ast_channel *chan, const /*! \brief Determine system call pickup extension */ const char *ast_pickup_ext(void); +/*! + * \brief Simulate a DTMF end on a broken bridge channel. + * + * \param chan Channel sending DTMF that has not ended. + * \param digit DTMF digit to stop. + * \param start DTMF digit start time. + * \param why Reason bridge broken. + * + * \return Nothing + */ +void ast_bridge_end_dtmf(struct ast_channel *chan, char digit, struct timeval start, const char *why); + /*! \brief Bridge a call, optionally allowing redirection */ int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer,struct ast_bridge_config *config); |