aboutsummaryrefslogtreecommitdiffstats
path: root/pbx
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-10-14 15:24:52 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-10-14 15:24:52 +0000
commit062af3bf382a8c11deef4e7f1d44dbd134c63918 (patch)
tree2797fda56025f434cc0e36d0c8137d2fb79c0c2d /pbx
parentc413ad4c731aef9d4109cca754e478e458c5c836 (diff)
Don't create the context for users in users.conf until we know at least one user exists.
(closes issue #10971) Reported by: dimas Patches: pbxconfig.patch uploaded by dimas (license 88) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@85540 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-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 */