aboutsummaryrefslogtreecommitdiffstats
path: root/main/enum.c
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-16 21:09:46 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-16 21:09:46 +0000
commitdbec3d56c146801fad339a1d46a388865b18ffb4 (patch)
tree8fda811f62cb6ffb99847befb7b74b1519ea95ba /main/enum.c
parent0fb9c73a989207650aa3ba603824e4593809611b (diff)
Don't reload a configuration file if nothing has changed.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@79747 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/enum.c')
-rw-r--r--main/enum.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/main/enum.c b/main/enum.c
index cf298a655..9e771b948 100644
--- a/main/enum.c
+++ b/main/enum.c
@@ -605,11 +605,15 @@ static struct enum_search *enum_newtoplev(char *s)
}
/*! \brief Initialize the ENUM support subsystem */
-int ast_enum_init(void)
+static int private_enum_init(int reload)
{
struct ast_config *cfg;
struct enum_search *s, *sl;
struct ast_variable *v;
+ struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
+
+ if ((cfg = ast_config_load("enum.conf", config_flags)) == CONFIG_STATUS_FILEUNCHANGED)
+ return 0;
/* Destroy existing list */
ast_mutex_lock(&enumlock);
@@ -620,7 +624,6 @@ int ast_enum_init(void)
ast_free(sl);
}
toplevs = NULL;
- cfg = ast_config_load("enum.conf");
if (cfg) {
sl = NULL;
v = ast_variable_browse(cfg, "general");
@@ -646,7 +649,12 @@ int ast_enum_init(void)
return 0;
}
+int ast_enum_init(void)
+{
+ return private_enum_init(0);
+}
+
int ast_enum_reload(void)
{
- return ast_enum_init();
+ return private_enum_init(1);
}