diff options
Diffstat (limited to 'dnsmgr.c')
-rwxr-xr-x | dnsmgr.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -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; } } |