From 9495a7ba7e019acfae120d17ae2c25e7db69b3c0 Mon Sep 17 00:00:00 2001 From: Matthew Jordan <mjordan@digium.com> Date: Wed, 16 Jan 2013 00:14:38 +0000 Subject: [PATCH] Set the INVALID_EXTEN channel variable when chan_misdn forces the 'i' extension The chan_misdn channel driver will send a channel with an invalid destination to the 'i' extension itself if said extension can be reached. It forgot, however, to set the INVALID_EXTEN channel variable when it bounces the channel to this extension. Dialplan writers everywhere moaned at yet another inconsistency. This is yet another example of why duplicating logic in multiple places results in bugs that stick around in Jira for just under three years. Yes: ASTERISK-15456 was created on January 18th, 2010. Patch committed on January 15th, 2013. Ouch. (closes issue ASTERISK-15456) Reported by: Thomas Omerzu patches: chan_misdn_invalid.patch2 uploaded by Thomas Omerzu (license 5927) ........ Merged revisions 379145 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@379146 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_misdn.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index d7cffc5f4f..f931a9d74a 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -10088,8 +10088,8 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) ast_log(LOG_WARNING, "Extension '%s@%s' can never match. Jumping to 'i' extension. port:%d\n", bc->dialed.number, ch->context, bc->port); + pbx_builtin_setvar_helper(ch->ast, "INVALID_EXTEN", bc->dad); ast_channel_exten_set(ch->ast, "i"); - ch->state = MISDN_DIALING; start_pbx(ch, bc, ch->ast); break; @@ -10346,6 +10346,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) ast_log(LOG_WARNING, "Extension '%s@%s' can never match. Jumping to 'i' extension. port:%d\n", bc->dialed.number, ch->context, bc->port); + pbx_builtin_setvar_helper(ch->ast, "INVALID_EXTEN", bc->dad); ast_channel_exten_set(ch->ast, "i"); misdn_lib_send_event(bc, EVENT_SETUP_ACKNOWLEDGE); ch->state = MISDN_DIALING; -- GitLab