mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-18 18:46:16 +00:00
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
This commit is contained in:
@@ -193,6 +193,8 @@ struct ast_channel {
|
||||
char macrocontext[AST_MAX_CONTEXT]; /*!< Macro: Current non-macro context. See app_macro.c */
|
||||
char macroexten[AST_MAX_EXTENSION]; /*!< Macro: Current non-macro extension. See app_macro.c */
|
||||
char dtmf_digit_to_emulate; /*!< Digit being emulated */
|
||||
char sending_dtmf_digit; /*!< Digit this channel is currently sending out. (zero if not sending) */
|
||||
struct timeval sending_dtmf_tv; /*!< The time this channel started sending the current digit. (Invalid if sending_dtmf_digit is zero.) */
|
||||
};
|
||||
|
||||
/* AST_DATA definitions, which will probably have to be re-thought since the channel will be opaque */
|
||||
@@ -523,6 +525,25 @@ void ast_channel_dtmf_digit_to_emulate_set(struct ast_channel *chan, char value)
|
||||
{
|
||||
chan->dtmf_digit_to_emulate = value;
|
||||
}
|
||||
|
||||
char ast_channel_sending_dtmf_digit(const struct ast_channel *chan)
|
||||
{
|
||||
return chan->sending_dtmf_digit;
|
||||
}
|
||||
void ast_channel_sending_dtmf_digit_set(struct ast_channel *chan, char value)
|
||||
{
|
||||
chan->sending_dtmf_digit = value;
|
||||
}
|
||||
|
||||
struct timeval ast_channel_sending_dtmf_tv(const struct ast_channel *chan)
|
||||
{
|
||||
return chan->sending_dtmf_tv;
|
||||
}
|
||||
void ast_channel_sending_dtmf_tv_set(struct ast_channel *chan, struct timeval value)
|
||||
{
|
||||
chan->sending_dtmf_tv = value;
|
||||
}
|
||||
|
||||
int ast_channel_amaflags(const struct ast_channel *chan)
|
||||
{
|
||||
return chan->amaflags;
|
||||
|
Reference in New Issue
Block a user