aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMachiavelli <none@none>2010-08-15 16:55:44 +0200
committerMachiavelli <none@none>2010-08-15 16:55:44 +0200
commite8d03e55ca8eee754412d9779e54043bef6c13f6 (patch)
tree85a61d70742be0c9ef6a6978e5586c892ce0249c /src
parent96144752be826028ba3aa1f2ff663b5a0fc4dcb0 (diff)
Fix a crash related to concurrent access to config file by different threads.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/server/shared/Configuration/Config.cpp2
-rw-r--r--src/server/shared/Configuration/Config.h3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/server/shared/Configuration/Config.cpp b/src/server/shared/Configuration/Config.cpp
index d0b9cd4ff17..2d38c39ac42 100644
--- a/src/server/shared/Configuration/Config.cpp
+++ b/src/server/shared/Configuration/Config.cpp
@@ -26,6 +26,8 @@ static bool GetValueHelper(ACE_Configuration_Heap *mConf, const char *name, ACE_
if (!mConf)
return false;
+ ACE_GUARD_RETURN(ACE_Thread_Mutex, guard, sConfig.mMtx, false);
+
ACE_TString section_name;
ACE_Configuration_Section_Key section_key;
ACE_Configuration_Section_Key root_key = mConf->root_section();
diff --git a/src/server/shared/Configuration/Config.h b/src/server/shared/Configuration/Config.h
index 93830a15023..218da4b7583 100644
--- a/src/server/shared/Configuration/Config.h
+++ b/src/server/shared/Configuration/Config.h
@@ -43,6 +43,9 @@ class Config
float GetFloatDefault(const char * name, const float def);
std::string GetFilename() const { return mFilename; }
+
+ ACE_Thread_Mutex mMtx;
+
private:
std::string mFilename;
ACE_Configuration_Heap *mConf;