Index: configs/extensions.conf.sample =================================================================== RCS file: /usr/cvsroot/asterisk/configs/extensions.conf.sample,v retrieving revision 1.42 diff -u -r1.42 extensions.conf.sample --- configs/extensions.conf.sample 15 May 2005 20:04:05 -0000 1.42 +++ configs/extensions.conf.sample 26 May 2005 05:18:50 -0000 @@ -34,7 +34,16 @@ ; (this is the original behavior of Asterisk 1.0 and earlier). ; autofallthrough=yes - +; +; If clearglobalvars is set, global variables will be cleared +; and reparsed on an extensions reload, or asterisk reload. +; +; If clearglobalvars is not set, then global variables will persist +; through reloads, and even if deleted from the extensions.conf or +; one if it's included files, will remain set to the previous value. +; +clearglobalvars=no +; ; You can include other config files, use the #include command (without the ';') ; Note that this is different from the "include" command that includes contexts within ; other contexts. The #include command works in all asterisk configuration files. Index: pbx/pbx_config.c =================================================================== RCS file: /usr/cvsroot/asterisk/pbx/pbx_config.c,v retrieving revision 1.63 diff -u -r1.63 pbx_config.c --- pbx/pbx_config.c 19 May 2005 01:57:19 -0000 1.63 +++ pbx/pbx_config.c 26 May 2005 05:18:51 -0000 @@ -44,6 +44,7 @@ static int static_config = 0; static int write_protect_config = 1; static int autofallthrough_config = 0; +static int clearglobalvars_config = 0; AST_MUTEX_DEFINE_STATIC(save_dialplan_lock); @@ -97,7 +98,8 @@ static char reload_extensions_help[] = "Usage: reload extensions.conf without reloading any other modules\n" -" This command does not delete global variables\n" +" This command does not delete global variables unless\n" +" clearglobalvars is set to yes in extensions.conf\n" "\n" "Example: extensions reload\n"; @@ -1636,6 +1638,9 @@ autofallthrough_config = ast_true(ast_variable_retrieve(cfg, "general", "autofallthrough")); + clearglobalvars_config = ast_true(ast_variable_retrieve(cfg, "general", + "clearglobalvars")); + v = ast_variable_browse(cfg, "globals"); while(v) { memset(realvalue, 0, sizeof(realvalue)); @@ -1816,10 +1821,8 @@ int reload(void) { ast_context_destroy(NULL, registrar); - /* For martin's global variables, don't clear them on reload */ -#if 0 - pbx_builtin_clear_globals(); -#endif + if (clearglobalvars_config) + pbx_builtin_clear_globals(); pbx_load_module(); return 0; }