; (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 its 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.
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);
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";
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));
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;
}