diff --git a/OpenSim/Region/Application/ConfigurationLoader.cs b/OpenSim/Region/Application/ConfigurationLoader.cs
index d0f6ab7c94..4a7c8b083b 100644
--- a/OpenSim/Region/Application/ConfigurationLoader.cs
+++ b/OpenSim/Region/Application/ConfigurationLoader.cs
@@ -70,7 +70,7 @@ namespace OpenSim
///
/// A configuration that gets passed to modules
public OpenSimConfigSource LoadConfigSettings(
- IConfigSource argvSource, out ConfigSettings configSettings,
+ IConfigSource argvSource, EnvConfigSource envConfigSource, out ConfigSettings configSettings,
out NetworkServersInfo networkInfo)
{
m_configSettings = configSettings = new ConfigSettings();
@@ -195,6 +195,24 @@ namespace OpenSim
// Make sure command line options take precedence
m_config.Source.Merge(argvSource);
+
+ IConfig enVars = m_config.Source.Configs["Environment"];
+
+ if( enVars != null )
+ {
+ string[] env_keys = enVars.GetKeys();
+
+ foreach ( string key in env_keys )
+ {
+ envConfigSource.AddEnv(key, string.Empty);
+ }
+
+ envConfigSource.LoadEnv();
+ m_config.Source.Merge(envConfigSource);
+ m_config.Source.ExpandKeyValues();
+ }
+
+
ReadConfigSettings();
return m_config;
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 553786b1f7..0a78df27ce 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -108,6 +108,13 @@ namespace OpenSim
get { return m_clientServers; }
}
+ protected EnvConfigSource m_EnvConfigSource = new EnvConfigSource();
+
+ public EnvConfigSource envConfigSource
+ {
+ get { return m_EnvConfigSource; }
+ }
+
protected List m_clientServers = new List();
public uint HttpServerPort
@@ -142,7 +149,7 @@ namespace OpenSim
protected virtual void LoadConfigSettings(IConfigSource configSource)
{
m_configLoader = new ConfigurationLoader();
- m_config = m_configLoader.LoadConfigSettings(configSource, out m_configSettings, out m_networkServersInfo);
+ m_config = m_configLoader.LoadConfigSettings(configSource, envConfigSource, out m_configSettings, out m_networkServersInfo);
ReadExtraConfigSettings();
}
diff --git a/OpenSim/Tests/ConfigurationLoaderTest.cs b/OpenSim/Tests/ConfigurationLoaderTest.cs
index c777acc0f1..067264d027 100644
--- a/OpenSim/Tests/ConfigurationLoaderTest.cs
+++ b/OpenSim/Tests/ConfigurationLoaderTest.cs
@@ -109,11 +109,13 @@ namespace OpenSim.Tests
// Prepare call to ConfigurationLoader.LoadConfigSettings()
ConfigurationLoader cl = new ConfigurationLoader();
IConfigSource argvSource = new IniConfigSource();
+ EnvConfigSource envConfigSource = new EnvConfigSource();
argvSource.AddConfig("Startup").Set("inifile", mainIniFile);
ConfigSettings configSettings;
NetworkServersInfo networkInfo;
- OpenSimConfigSource source = cl.LoadConfigSettings(argvSource, out configSettings, out networkInfo);
+ OpenSimConfigSource source = cl.LoadConfigSettings(argvSource, envConfigSource,
+ out configSettings, out networkInfo);
// Remove default config
config = source.Source.Configs["Startup"];
diff --git a/bin/Nini.dll b/bin/Nini.dll
index 745057c3f6..c421005ba3 100755
Binary files a/bin/Nini.dll and b/bin/Nini.dll differ