[asterisk-commits] russell: branch group/newcdr r201983 - /team/group/newcdr/main/cel.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Jun 19 13:32:02 CDT 2009
Author: russell
Date: Fri Jun 19 13:31:59 2009
New Revision: 201983
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=201983
Log:
Use brute force to ensure the CEL core is safe from simultaneous reload attempts
Modified:
team/group/newcdr/main/cel.c
Modified: team/group/newcdr/main/cel.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/main/cel.c?view=diff&rev=201983&r1=201982&r2=201983
==============================================================================
--- team/group/newcdr/main/cel.c (original)
+++ team/group/newcdr/main/cel.c Fri Jun 19 13:31:59 2009
@@ -140,6 +140,7 @@
return (eventset & (1 << (int)et));
}
+AST_MUTEX_DEFINE_STATIC(reload_lock);
static int do_reload(void)
{
@@ -152,6 +153,8 @@
struct ast_flags config_flags = { CONFIG_FLAG_FILEUNCHANGED };
const char *s;
+ ast_mutex_lock(&reload_lock);
+
cel_enabled = 1;
if (appset) {
@@ -170,7 +173,7 @@
config = ast_config_load2("cel.conf", "cel", config_flags);
if (!config || config == CONFIG_STATUS_FILEUNCHANGED) {
- return 0;
+ goto return_cleanup;
}
if ((enabled_value = ast_variable_retrieve(config, "general", "enable"))) {
@@ -313,7 +316,11 @@
return_cleanup:
ast_verb(3, "CEL logging %sabled.\n", cel_enabled ? "en" : "dis");
- ast_config_destroy(config);
+ ast_mutex_unlock(&reload_lock);
+
+ if (config) {
+ ast_config_destroy(config);
+ }
return res;
}
More information about the asterisk-commits
mailing list