aboutsummaryrefslogtreecommitdiffstats
path: root/dnsmgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'dnsmgr.c')
-rwxr-xr-xdnsmgr.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/dnsmgr.c b/dnsmgr.c
index 9c7b02179..287332365 100755
--- a/dnsmgr.c
+++ b/dnsmgr.c
@@ -187,8 +187,16 @@ static int refresh_list(void *data)
ast_mutex_unlock(&refresh_lock);
- /* automatically reschedule */
- return -1;
+ /* automatically reschedule based on the interval */
+ return refresh_interval * 1000;
+}
+
+void dnsmgr_start_refresh(void)
+{
+ if (refresh_sched > -1) {
+ ast_sched_del(sched, refresh_sched);
+ refresh_sched = ast_sched_add(sched, 100, refresh_list, &master_refresh_info);
+ }
}
static int do_reload(int loading);
@@ -328,10 +336,8 @@ static int do_reload(int loading)
ast_config_destroy(config);
}
- if (enabled && refresh_interval) {
- refresh_sched = ast_sched_add(sched, refresh_interval * 1000, refresh_list, &master_refresh_info);
+ if (enabled && refresh_interval)
ast_log(LOG_NOTICE, "Managed DNS entries will be refreshed every %d seconds.\n", refresh_interval);
- }
/* if this reload enabled the manager, create the background thread
if it does not exist */
@@ -340,10 +346,11 @@ static int do_reload(int loading)
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if (ast_pthread_create(&refresh_thread, &attr, do_refresh, NULL) < 0) {
ast_log(LOG_ERROR, "Unable to start refresh thread.\n");
- ast_sched_del(sched, refresh_sched);
}
else {
ast_cli_register(&cli_refresh);
+ /* make a background refresh happen right away */
+ refresh_sched = ast_sched_add(sched, 100, refresh_list, &master_refresh_info);
res = 0;
}
}