aboutsummaryrefslogtreecommitdiffstats
path: root/pbx/pbx_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'pbx/pbx_config.c')
-rw-r--r--pbx/pbx_config.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index 225fb139a..5f2a96311 100644
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -2366,14 +2366,11 @@ static void pbx_load_users(void)
int len;
int hasvoicemail;
int start, finish, x;
- struct ast_context *con;
+ struct ast_context *con = NULL;
cfg = ast_config_load("users.conf");
if (!cfg)
return;
- con = ast_context_find_or_create(&local_contexts, userscontext, registrar);
- if (!con)
- return;
for (cat = ast_category_browse(cfg, NULL); cat ; cat = ast_category_browse(cfg, cat)) {
if (!strcasecmp(cat, "general"))
@@ -2425,6 +2422,16 @@ static void pbx_load_users(void)
}
}
if (!ast_strlen_zero(iface)) {
+ /* Only create a context here when it is really needed. Otherwise default empty context
+ created by pbx_config may conflict with the one explicitly created by pbx_ael */
+ if (!con)
+ con = ast_context_find_or_create(&local_contexts, userscontext, registrar);
+
+ if (!con) {
+ ast_log(LOG_ERROR, "Can't find/create user context '%s'\n", userscontext);
+ return;
+ }
+
/* Add hint */
ast_add_extension2(con, 0, cat, -1, NULL, NULL, iface, NULL, NULL, registrar);
/* If voicemail, use "stdexten" else use plain old dial */