]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Set the INVALID_EXTEN channel variable when chan_misdn forces the 'i' extension
authorMatthew Jordan <mjordan@digium.com>
Wed, 16 Jan 2013 00:10:37 +0000 (00:10 +0000)
committerMatthew Jordan <mjordan@digium.com>
Wed, 16 Jan 2013 00:10:37 +0000 (00:10 +0000)
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)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379145 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_misdn.c

index 6379d736fba54b27c23c126d0bbffae51771d654..0c7f1f8c1ba3f4b18eeab7efb3398dcca48be54f 100644 (file)
@@ -10033,8 +10033,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);
                                        strcpy(ch->ast->exten, "i");
-
                                        ch->state = MISDN_DIALING;
                                        start_pbx(ch, bc, ch->ast);
                                        break;
@@ -10282,6 +10282,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);
                                strcpy(ch->ast->exten, "i");
                                misdn_lib_send_event(bc, EVENT_SETUP_ACKNOWLEDGE);
                                ch->state = MISDN_DIALING;