summaryrefslogtreecommitdiff
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorTilghman Lesher <tilghman@meg.abyt.es>2007-08-16 21:09:46 +0000
committerTilghman Lesher <tilghman@meg.abyt.es>2007-08-16 21:09:46 +0000
commit56b9568164b694a42e88f1f8a31012078b833203 (patch)
tree8fda811f62cb6ffb99847befb7b74b1519ea95ba /channels/chan_iax2.c
parentc0060cd99a0a318b504da4c13eee85f3b9043fdc (diff)
Don't reload a configuration file if nothing has changed.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 6f41fdb69..333ccb2fe 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -9776,15 +9776,26 @@ static int set_config(char *config_file, int reload)
struct iax2_user *user;
struct iax2_peer *peer;
struct ast_netsock *ns;
+ struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
#if 0
static unsigned short int last_port=0;
#endif
- cfg = ast_config_load(config_file);
-
+ cfg = ast_config_load(config_file, config_flags);
+
if (!cfg) {
ast_log(LOG_ERROR, "Unable to load config %s\n", config_file);
return -1;
+ } else if (cfg == CONFIG_STATUS_FILEUNCHANGED) {
+ ucfg = ast_config_load("users.conf", config_flags);
+ if (ucfg == CONFIG_STATUS_FILEUNCHANGED)
+ return 0;
+ /* Otherwise we need to reread both files */
+ ast_clear_flag(&config_flags, CONFIG_FLAG_FILEUNCHANGED);
+ cfg = ast_config_load(config_file, config_flags);
+ } else { /* iax.conf changed, gotta reread users.conf, too */
+ ast_clear_flag(&config_flags, CONFIG_FLAG_FILEUNCHANGED);
+ ucfg = ast_config_load("users.conf", config_flags);
}
/* Reset global codec prefs */
@@ -10048,7 +10059,6 @@ static int set_config(char *config_file, int reload)
}
iax2_capability = capability;
- ucfg = ast_config_load("users.conf");
if (ucfg) {
struct ast_variable *gen;
int genhasiax;
@@ -10176,7 +10186,7 @@ static int reload_config(void)
iax2_poke_peer(peer, 0);
AST_LIST_UNLOCK(&peers);
reload_firmware();
- iax_provision_reload();
+ iax_provision_reload(1);
return 0;
}
@@ -11097,7 +11107,7 @@ static int load_module(void)
AST_LIST_UNLOCK(&peers);
reload_firmware();
- iax_provision_reload();
+ iax_provision_reload(0);
return AST_MODULE_LOAD_SUCCESS;
}