Don't allow to issue a 'reload' command if the previous one didn't finish yet
authorMartin Pycko <martinp@digium.com>
Wed, 19 Nov 2003 21:19:18 +0000 (21:19 +0000)
committerMartin Pycko <martinp@digium.com>
Wed, 19 Nov 2003 21:19:18 +0000 (21:19 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1765 65c4cc65-6c06-0410-ace0-fbb531ad65f3

loader.c

index 1bb17ed..98ce7af 100755 (executable)
--- a/loader.c
+++ b/loader.c
@@ -99,6 +99,7 @@ static struct loadupdate {
 } *updaters = NULL;
 
 static ast_mutex_t modlock = AST_MUTEX_INITIALIZER;
+static ast_mutex_t reloadlock = AST_MUTEX_INITIALIZER;
 
 static struct module *module_list=NULL;
 
@@ -149,6 +150,11 @@ void ast_module_reload(void)
        struct module *m;
 
        /* We'll do the logger and manager the favor of calling its reload here first */
+
+       if (ast_mutex_trylock(&reloadlock)) {
+               ast_verbose("The previous reload command didn't finish yet\n");
+               return;
+       }
        reload_manager();
        ast_enum_reload();
        ast_rtp_reload();
@@ -165,6 +171,7 @@ void ast_module_reload(void)
                m = m->next;
        }
        ast_mutex_unlock(&modlock);
+       ast_mutex_unlock(&reloadlock);
 }
 
 int ast_load_resource(char *resource_name)