diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-11-08 01:29:14 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-11-08 01:29:14 +0000 |
commit | ae3a851d8dd9f5f7ee675223ef37251b77e82fcf (patch) | |
tree | 9b033722df2b718dc0ab80121ea5e343484b7831 /dnsmgr.c | |
parent | 448ccfc3b23b6dc1fb0745b4e65c12984c1031f3 (diff) |
issue #5599
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7007 f38db490-d61c-443f-a65b-d21fe96a405b
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; } } |