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 | |
parent | 448ccfc3b23b6dc1fb0745b4e65c12984c1031f3 (diff) |
issue #5599
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7007 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | ChangeLog | 3 | ||||
-rwxr-xr-x | asterisk.c | 3 | ||||
-rwxr-xr-x | dnsmgr.c | 19 | ||||
-rwxr-xr-x | include/asterisk.h | 25 |
4 files changed, 32 insertions, 18 deletions
@@ -1,5 +1,8 @@ 2005-11-07 Kevin P. Fleming <kpfleming@digium.com> + * asterisk.c (main): force a dnsmgr background refresh after all other modules are initialized (issue #5599) + * dnsmgr.c: add ability to start a background refresh on demand (issue #5599) + * apps/app_dial.c (HANDLE_CAUSE): set CDR disposition to match cause code (issue #5602) * asterisk.c: support 'runuser' and 'rungroup' options in asterisk.conf (issue #5621) diff --git a/asterisk.c b/asterisk.c index dab5c5342..201c9fd6b 100755 --- a/asterisk.c +++ b/asterisk.c @@ -2255,6 +2255,9 @@ int main(int argc, char *argv[]) printf(term_quit()); exit(1); } + + dnsmgr_start_refresh(); + #if 0 /* This should no longer be necessary */ /* sync cust config and reload some internals in case a custom config handler binded to them */ @@ -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; } } diff --git a/include/asterisk.h b/include/asterisk.h index 9508b7bff..e5fe754bd 100755 --- a/include/asterisk.h +++ b/include/asterisk.h @@ -42,27 +42,28 @@ extern char ast_config_AST_CTL_GROUP[AST_CONFIG_MAX_PATH]; extern char ast_config_AST_CTL[AST_CONFIG_MAX_PATH]; /* Provided by asterisk.c */ -extern int ast_set_priority(int); +int ast_set_priority(int); /* Provided by module.c */ -extern int load_modules(const int preload_only); +int load_modules(const int preload_only); /* Provided by pbx.c */ -extern int load_pbx(void); +int load_pbx(void); /* Provided by logger.c */ -extern int init_logger(void); -extern void close_logger(void); +int init_logger(void); +void close_logger(void); /* Provided by frame.c */ -extern int init_framer(void); +int init_framer(void); /* Provided by logger.c */ -extern int reload_logger(int); +int reload_logger(int); /* Provided by term.c */ -extern int term_init(void); +int term_init(void); /* Provided by db.c */ -extern int astdb_init(void); +int astdb_init(void); /* Provided by channel.c */ -extern void ast_channels_init(void); +void ast_channels_init(void); /* Provided by dnsmgr.c */ -extern int dnsmgr_init(void); -extern void dnsmgr_reload(void); +int dnsmgr_init(void); +void dnsmgr_start_refresh(void); +void dnsmgr_reload(void); /*! * \brief Register the version of a source code file with the core. |