summaryrefslogtreecommitdiff
path: root/pbx
diff options
context:
space:
mode:
authorzuul <zuul@gerrit.asterisk.org>2017-02-22 10:11:49 -0600
committerGerrit Code Review <gerrit2@gerrit.digium.api>2017-02-22 10:11:49 -0600
commit02356d36f782b1078ea7009a445dff60aef4aa0e (patch)
tree27ef42e54409927614c6748cd1c16bc6feb82299 /pbx
parent8f248f7a1cc8452eb455a338ddc9bae593310ee7 (diff)
parentab04a018e45d81c28e834cc6036f891dce7921e3 (diff)
Merge "realtime: Fix ast_load_realtime_multientry handling"
Diffstat (limited to 'pbx')
-rw-r--r--pbx/pbx_realtime.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/pbx/pbx_realtime.c b/pbx/pbx_realtime.c
index 08c90aa62..6f5d13738 100644
--- a/pbx/pbx_realtime.c
+++ b/pbx/pbx_realtime.c
@@ -189,25 +189,26 @@ static struct ast_variable *realtime_switch_common(const char *table, const char
if (!var && !ast_test_flag(&flags, OPTION_PATTERNS_DISABLED)) {
cfg = ast_load_realtime_multientry(table, "exten LIKE", "\\_%", "context", context, "priority", pri, SENTINEL);
if (cfg) {
- char *cat = ast_category_browse(cfg, NULL);
+ char *cat = NULL;
+
+ while ((cat = ast_category_browse(cfg, cat))) {
+ const char *realtime_exten = ast_variable_retrieve(cfg, cat, "exten");
- while(cat) {
switch(mode) {
case MODE_MATCHMORE:
- match = ast_extension_close(cat, exten, 1);
+ match = ast_extension_close(realtime_exten, exten, 1);
break;
case MODE_CANMATCH:
- match = ast_extension_close(cat, exten, 0);
+ match = ast_extension_close(realtime_exten, exten, 0);
break;
case MODE_MATCH:
default:
- match = ast_extension_match(cat, exten);
+ match = ast_extension_match(realtime_exten, exten);
}
if (match) {
var = ast_category_detach_variables(ast_category_get(cfg, cat, NULL));
break;
}
- cat = ast_category_browse(cfg, cat);
}
ast_config_destroy(cfg);
}