diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-08-16 21:09:46 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-08-16 21:09:46 +0000 |
commit | dbec3d56c146801fad339a1d46a388865b18ffb4 (patch) | |
tree | 8fda811f62cb6ffb99847befb7b74b1519ea95ba /channels/chan_agent.c | |
parent | 0fb9c73a989207650aa3ba603824e4593809611b (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 'channels/chan_agent.c')
-rw-r--r-- | channels/chan_agent.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 880501ac9..c4e0ecb61 100644 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -976,7 +976,7 @@ static struct ast_channel *agent_new(struct agent_pvt *p, int state) * * \returns Always 0, or so it seems. */ -static int read_agent_config(void) +static int read_agent_config(int reload) { struct ast_config *cfg; struct ast_config *ucfg; @@ -986,17 +986,19 @@ static int read_agent_config(void) const char *catname; const char *hasagent; int genhasagent; + struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 }; group = 0; autologoff = 0; wrapuptime = 0; ackcall = 0; endcall = 1; - cfg = ast_config_load(config); + cfg = ast_config_load(config, config_flags); if (!cfg) { ast_log(LOG_NOTICE, "No agent configuration found -- agent support disabled\n"); return 0; - } + } else if (cfg == CONFIG_STATUS_FILEUNCHANGED) + return -1; AST_LIST_LOCK(&agents); AST_LIST_TRAVERSE(&agents, p, list) { p->dead = 1; @@ -1081,7 +1083,7 @@ static int read_agent_config(void) } v = v->next; } - if ((ucfg = ast_config_load("users.conf"))) { + if ((ucfg = ast_config_load("users.conf", config_flags)) && ucfg != CONFIG_STATUS_FILEUNCHANGED) { genhasagent = ast_true(ast_variable_retrieve(ucfg, "general", "hasagent")); catname = ast_category_browse(ucfg, NULL); while(catname) { @@ -2276,7 +2278,7 @@ static int load_module(void) return -1; } /* Read in the config */ - if (!read_agent_config()) + if (!read_agent_config(0)) return AST_MODULE_LOAD_DECLINE; if (persistent_agents) reload_agents(); @@ -2299,9 +2301,10 @@ static int load_module(void) static int reload(void) { - read_agent_config(); - if (persistent_agents) - reload_agents(); + if (!read_agent_config(1)) { + if (persistent_agents) + reload_agents(); + } return 0; } |