Let ExtensionState resolve dynamic hints.
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 20 May 2010 22:23:32 +0000 (22:23 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 20 May 2010 22:23:32 +0000 (22:23 +0000)
(closes issue #16623)
 Reported by: tilghman
 Patches:
       20100116__issue16623.diff.txt uploaded by tilghman (license 14)
 Tested by: lmadsen

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

main/pbx.c

index 60b2e94..8e5aa46 100644 (file)
@@ -4195,6 +4195,17 @@ int ast_extension_state(struct ast_channel *c, const char *context, const char *
                return -1;                   /* No hint, return -1 */
        }
 
+       if (e->exten[0] == '_') {
+               /* Create this hint on-the-fly */
+               ast_add_extension(e->parent->name, 0, exten, e->priority, e->label,
+                       e->matchcid ? e->cidmatch : NULL, e->app, ast_strdup(e->data), ast_free_ptr,
+                       e->registrar);
+               if (!(e = ast_hint_extension(c, context, exten))) {
+                       /* Improbable, but not impossible */
+                       return -1;
+               }
+       }
+
        return ast_extension_state2(e);  /* Check all devices in the hint */
 }