Merge commit '39d7945efc8daa6e5cd0f4728b499e7a624526cd' into bigmerge

Conflicts:
	OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs
avinationmerge
Melanie 2011-10-11 23:01:52 +01:00
commit 5536cdf90c
6 changed files with 78 additions and 38 deletions

View File

@ -48,11 +48,13 @@ namespace OpenSim.Framework.RegionLoader.Filesystem
public RegionInfo[] LoadRegions() public RegionInfo[] LoadRegions()
{ {
string regionConfigPath = Path.Combine(Util.configDir(), "Regions"); string regionConfigPath = Path.Combine(Util.configDir(), "Regions");
bool allowRegionless = false;
try try
{ {
IConfig startupConfig = (IConfig)m_configSource.Configs["Startup"]; IConfig startupConfig = (IConfig)m_configSource.Configs["Startup"];
regionConfigPath = startupConfig.GetString("regionload_regionsdir", regionConfigPath).Trim(); regionConfigPath = startupConfig.GetString("regionload_regionsdir", regionConfigPath).Trim();
allowRegionless = startupConfig.GetBoolean("allow_regionless", false);
} }
catch (Exception) catch (Exception)
{ {
@ -68,7 +70,7 @@ namespace OpenSim.Framework.RegionLoader.Filesystem
string[] iniFiles = Directory.GetFiles(regionConfigPath, "*.ini"); string[] iniFiles = Directory.GetFiles(regionConfigPath, "*.ini");
// Create an empty Regions.ini if there are no existing config files. // Create an empty Regions.ini if there are no existing config files.
if (configFiles.Length == 0 && iniFiles.Length == 0) if (!allowRegionless && configFiles.Length == 0 && iniFiles.Length == 0)
{ {
new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "Regions.ini"), false, m_configSource); new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "Regions.ini"), false, m_configSource);
iniFiles = Directory.GetFiles(regionConfigPath, "*.ini"); iniFiles = Directory.GetFiles(regionConfigPath, "*.ini");

View File

@ -60,6 +60,8 @@ namespace OpenSim.Framework.RegionLoader.Web
{ {
IConfig startupConfig = (IConfig) m_configSource.Configs["Startup"]; IConfig startupConfig = (IConfig) m_configSource.Configs["Startup"];
string url = startupConfig.GetString("regionload_webserver_url", String.Empty).Trim(); string url = startupConfig.GetString("regionload_webserver_url", String.Empty).Trim();
bool allowRegionless = startupConfig.GetBoolean("allow_regionless", false);
if (url == String.Empty) if (url == String.Empty)
{ {
m_log.Error("[WEBLOADER]: Unable to load webserver URL - URL was empty."); m_log.Error("[WEBLOADER]: Unable to load webserver URL - URL was empty.");
@ -69,11 +71,16 @@ namespace OpenSim.Framework.RegionLoader.Web
{ {
while(tries > 0) while(tries > 0)
{ {
RegionInfo[] regionInfos = new RegionInfo[] {};
int regionCount = 0;
HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(url); HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(url);
webRequest.Timeout = 30000; //30 Second Timeout webRequest.Timeout = 30000; //30 Second Timeout
m_log.Debug("[WEBLOADER]: Sending Download Request..."); m_log.DebugFormat("[WEBLOADER]: Sending download request to {0}", url);
try
{
HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse(); HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse();
m_log.Debug("[WEBLOADER]: Downloading Region Information From Remote Server..."); m_log.Debug("[WEBLOADER]: Downloading region information...");
StreamReader reader = new StreamReader(webResponse.GetResponseStream()); StreamReader reader = new StreamReader(webResponse.GetResponseStream());
string xmlSource = String.Empty; string xmlSource = String.Empty;
string tempStr = reader.ReadLine(); string tempStr = reader.ReadLine();
@ -88,7 +95,11 @@ namespace OpenSim.Framework.RegionLoader.Web
xmlDoc.LoadXml(xmlSource); xmlDoc.LoadXml(xmlSource);
if (xmlDoc.FirstChild.Name == "Regions") if (xmlDoc.FirstChild.Name == "Regions")
{ {
RegionInfo[] regionInfos = new RegionInfo[xmlDoc.FirstChild.ChildNodes.Count]; regionCount = xmlDoc.FirstChild.ChildNodes.Count;
if (regionCount > 0)
{
regionInfos = new RegionInfo[regionCount];
int i; int i;
for (i = 0; i < xmlDoc.FirstChild.ChildNodes.Count; i++) for (i = 0; i < xmlDoc.FirstChild.ChildNodes.Count; i++)
{ {
@ -96,10 +107,22 @@ namespace OpenSim.Framework.RegionLoader.Web
regionInfos[i] = regionInfos[i] =
new RegionInfo("REGION CONFIG #" + (i + 1), xmlDoc.FirstChild.ChildNodes[i],false,m_configSource); new RegionInfo("REGION CONFIG #" + (i + 1), xmlDoc.FirstChild.ChildNodes[i],false,m_configSource);
} }
if (i > 0)
return regionInfos;
} }
}
}
catch (WebException ex)
{
if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
{
if (!allowRegionless)
throw ex;
}
else
throw ex;
}
if (regionCount > 0 | allowRegionless)
return regionInfos;
m_log.Debug("[WEBLOADER]: Request yielded no regions."); m_log.Debug("[WEBLOADER]: Request yielded no regions.");
tries--; tries--;
@ -109,6 +132,8 @@ namespace OpenSim.Framework.RegionLoader.Web
System.Threading.Thread.Sleep(wait); System.Threading.Thread.Sleep(wait);
} }
} }
m_log.Error("[WEBLOADER]: No region configs were available.");
return null; return null;
} }
} }

View File

@ -111,6 +111,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
} }
public void PostInitialise() public void PostInitialise()
{
if (m_scene != null)
{ {
m_textureManager = m_scene.RequestModuleInterface<IDynamicTextureManager>(); m_textureManager = m_scene.RequestModuleInterface<IDynamicTextureManager>();
if (m_textureManager != null) if (m_textureManager != null)
@ -118,6 +120,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
m_textureManager.RegisterRender(GetContentType(), this); m_textureManager.RegisterRender(GetContentType(), this);
} }
} }
}
public void Close() public void Close()
{ {

View File

@ -233,6 +233,7 @@ namespace OpenSim.Tools.Configger
config = defaultConfig.AddConfig("Startup"); config = defaultConfig.AddConfig("Startup");
config.Set("region_info_source", "filesystem"); config.Set("region_info_source", "filesystem");
config.Set("allow_regionless", false);
config.Set("gridmode", false); config.Set("gridmode", false);
config.Set("physics", "OpenDynamicsEngine"); config.Set("physics", "OpenDynamicsEngine");

View File

@ -71,6 +71,11 @@
;; in a <Regions> tag. ;; in a <Regions> tag.
; regionload_webserver_url = "http://example.com/regions.xml"; ; regionload_webserver_url = "http://example.com/regions.xml";
;# {allow_regionless} {} {Allow simulator to start up with no regions configured.} {true false} false
;; Allow the simulator to start up if there are no region configuration available
;; from the selected region_info_source.
; allow_regionless = false
;# {NonPhysicalPrimMax} {} {Maximum size of nonphysical prims?} {} 256 ;# {NonPhysicalPrimMax} {} {Maximum size of nonphysical prims?} {} 256
;; Maximum size for non-physical prims. Affects resizing of existing prims. This can be overriden in the region config file (as NonphysicalPrimMax!). ;; Maximum size for non-physical prims. Affects resizing of existing prims. This can be overriden in the region config file (as NonphysicalPrimMax!).
; NonPhysicalPrimMax = 256 ; NonPhysicalPrimMax = 256

View File

@ -70,6 +70,10 @@
; except that everything is also enclosed in a <Regions> tag. ; except that everything is also enclosed in a <Regions> tag.
; regionload_webserver_url = "http://example.com/regions.xml"; ; regionload_webserver_url = "http://example.com/regions.xml";
;; Allow the simulator to start up if there are no region configuration available
;; from the selected region_info_source.
allow_regionless = false
; Maximum size of non physical prims. Affects resizing of existing prims. This can be overriden in the region config file (as NonphysicalPrimMax!). ; Maximum size of non physical prims. Affects resizing of existing prims. This can be overriden in the region config file (as NonphysicalPrimMax!).
NonPhysicalPrimMax = 256 NonPhysicalPrimMax = 256