diff --git a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
index 4132b2be7b..f547251c8d 100644
--- a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
@@ -44,21 +44,25 @@ namespace OpenSim.Framework.Serialization.External
/// Deserialize settings
///
///
+ ///
+ /// The Estate Settings stored in the archive will be merged into this object
///
///
- public static RegionSettings Deserialize(byte[] serializedSettings, out ViewerEnvironment regionEnv)
+ public static RegionSettings Deserialize(byte[] serializedSettings, out ViewerEnvironment regionEnv, EstateSettings estateSettings)
{
// encoding is wrong. old oars seem to be on utf-16
- return Deserialize(Encoding.ASCII.GetString(serializedSettings, 0, serializedSettings.Length), out regionEnv);
+ return Deserialize(Encoding.ASCII.GetString(serializedSettings, 0, serializedSettings.Length), out regionEnv, estateSettings);
}
///
/// Deserialize settings
///
///
+ ///
+ /// The Estate Settings stored in the archive will be merged into this object
///
///
- public static RegionSettings Deserialize(string serializedSettings, out ViewerEnvironment regionEnv)
+ public static RegionSettings Deserialize(string serializedSettings, out ViewerEnvironment regionEnv, EstateSettings estateSettings)
{
RegionSettings settings = new RegionSettings();
regionEnv = null;
@@ -237,13 +241,36 @@ namespace OpenSim.Framework.Serialization.External
}
}
+ if (xtr.IsStartElement("Estate"))
+ {
+ if (xtr.IsEmptyElement)
+ xtr.Read();
+ else
+ {
+ xtr.ReadStartElement("Estate");
+ while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
+ {
+ switch (xtr.Name)
+ {
+ case "AllowDirectTeleport":
+ estateSettings.AllowDirectTeleport = bool.Parse(xtr.ReadElementContentAsString());
+ break;
+ case "AllowEnvironmentOverride":
+ estateSettings.AllowEnvironmentOverride = bool.Parse(xtr.ReadElementContentAsString());
+ break;
+ }
+ }
+ xtr.ReadEndElement();
+ }
+ }
+
xtr.Close();
sr.Close();
return settings;
}
- public static string Serialize(RegionSettings settings, ViewerEnvironment RegionEnv)
+ public static string Serialize(RegionSettings settings, ViewerEnvironment RegionEnv, EstateSettings estateSettings)
{
StringWriter sw = new StringWriter();
XmlTextWriter xtw = new XmlTextWriter(sw);
@@ -308,6 +335,11 @@ namespace OpenSim.Framework.Serialization.External
xtw.WriteEndElement();
}
+ xtw.WriteStartElement("Estate");
+ xtw.WriteElementString("AllowDirectTeleport", estateSettings.AllowDirectTeleport.ToString());
+ xtw.WriteElementString("AllowEnvironmentOverride", estateSettings.AllowEnvironmentOverride.ToString());
+ xtw.WriteEndElement();
+
xtw.WriteEndElement();
xtw.Close();
diff --git a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
index 80215e5e6d..4f3f2ddde3 100644
--- a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
+++ b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
@@ -130,7 +130,7 @@ namespace OpenSim.Framework.Serialization.Tests
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs, out ViewerEnvironment dummy);
+ RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs, out ViewerEnvironment dummy, new EstateSettings());
Assert.That(deserRs, Is.Not.Null);
Assert.That(deserRs.TerrainTexture2, Is.EqualTo(m_rs.TerrainTexture2));
Assert.That(deserRs.DisablePhysics, Is.EqualTo(m_rs.DisablePhysics));
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index fd8f72b8cf..b7f5808c17 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -650,6 +650,8 @@ namespace OpenSim.Framework.Servers.HttpServer
IRequestHandler requestHandler = null;
+ byte[] responseData = null;
+
try
{
// OpenSim.Framework.WebUtil.OSHeaderRequestID
@@ -671,6 +673,7 @@ namespace OpenSim.Framework.Servers.HttpServer
request.InputStream.Dispose();
requestEndTick = Environment.TickCount;
+ responseData = response.RawBuffer;
response.Send();
return;
}
@@ -692,6 +695,7 @@ namespace OpenSim.Framework.Servers.HttpServer
request.InputStream.Dispose();
requestEndTick = Environment.TickCount;
+ responseData = response.RawBuffer;
response.Send();
return;
}
@@ -736,6 +740,7 @@ namespace OpenSim.Framework.Servers.HttpServer
request.InputStream.Dispose();
requestEndTick = Environment.TickCount;
+ responseData = response.RawBuffer;
response.Send();
return;
}
@@ -744,11 +749,15 @@ namespace OpenSim.Framework.Servers.HttpServer
if (TryGetSimpleStreamHandler(path, out ISimpleStreamHandler hdr))
{
+ if (DebugLevel >= 3)
+ LogIncomingToStreamHandler(request, hdr);
+
hdr.Handle(request, response);
if (request.InputStream != null && request.InputStream.CanRead)
request.InputStream.Dispose();
requestEndTick = Environment.TickCount;
+ responseData = response.RawBuffer;
response.Send();
return;
}
@@ -898,6 +907,7 @@ namespace OpenSim.Framework.Servers.HttpServer
requestEndTick = Environment.TickCount;
buffer = null;
+ responseData = response.RawBuffer;
response.Send();
}
catch (SocketException e)
@@ -921,6 +931,7 @@ namespace OpenSim.Framework.Servers.HttpServer
try
{
response.StatusCode =(int)HttpStatusCode.InternalServerError;
+ responseData = response.RawBuffer;
response.Send();
}
catch {}
@@ -951,6 +962,19 @@ namespace OpenSim.Framework.Servers.HttpServer
Port,
tickdiff);
}
+
+ if ((DebugLevel >= 5) && (responseData != null))
+ {
+ string output = Encoding.UTF8.GetString(responseData);
+ if (DebugLevel == 5)
+ {
+ if (output.Length > WebUtil.MaxRequestDiagLength)
+ output = output.Substring(0, WebUtil.MaxRequestDiagLength) + "...";
+ }
+ m_log.DebugFormat("[LOGHTTP] RESPONSE {0}: {1}", RequestNumber, output);
+ }
+
+ responseData = null;
}
}
@@ -970,6 +994,21 @@ namespace OpenSim.Framework.Servers.HttpServer
LogIncomingInDetail(request);
}
+ private void LogIncomingToStreamHandler(OSHttpRequest request, ISimpleStreamHandler requestHandler)
+ {
+ m_log.DebugFormat(
+ "[LOGHTTP] HTTP IN {0} :{1} stream handler {2} {3} {4} from {5}",
+ RequestNumber,
+ Port,
+ request.HttpMethod,
+ request.Url.PathAndQuery,
+ requestHandler.Name,
+ request.RemoteIPEndPoint);
+
+ if (DebugLevel >= 5)
+ LogIncomingInDetail(request);
+ }
+
private void LogIncomingToContentTypeHandler(OSHttpRequest request)
{
m_log.DebugFormat(
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index 68231a91b6..494ac8065f 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -1044,7 +1044,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
ViewerEnvironment regionEnv = null;
try
{
- loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, out regionEnv);
+ loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, out regionEnv, scene.RegionInfo.EstateSettings);
}
catch (Exception e)
{
@@ -1104,6 +1104,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
currentRegionSettings.CacheID = UUID.Random();
currentRegionSettings.Save();
+ scene.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
+
IEstateModule estateModule = scene.RequestModuleInterface();
if (estateModule != null)
estateModule.sendRegionHandshakeToAll();
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs
index 2511c103e2..d62eecb0a9 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs
@@ -579,7 +579,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
// Write out region settings
string settingsPath = String.Format("{0}{1}{2}.xml",
regionDir, ArchiveConstants.SETTINGS_PATH, scene.RegionInfo.RegionName);
- m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings, scene.RegionEnvironment));
+ m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings, scene.RegionEnvironment, scene.RegionInfo.EstateSettings));
m_log.InfoFormat("[ARCHIVER]: Adding parcel settings to archive.");
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index 85eaaf0434..514a1596ac 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -657,7 +657,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
rs.TelehubObject = UUID.Parse("00000000-0000-0000-0000-111111111111");
rs.AddSpawnPoint(SpawnPoint.Parse("1,-2,0.33"));
- tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs, null));
+ tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs, null, new EstateSettings()));
tar.Close();
diff --git a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs
index 5df9c1e944..06baea312e 100644
--- a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs
+++ b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs
@@ -65,10 +65,10 @@ namespace OpenSim.Region.CoreModules.World.LightShare
private ILandChannel m_landChannel;
private static ViewerEnvironment m_DefaultEnv = null;
- // 1/1 night day ratio
- //private static readonly string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a91";
- // 3/1 night day ratio
- private static string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a92";
+ // 1/1 day-to-night ratio
+ //private static readonly string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a91"; // Default Daycycle
+ // 3/1 day-to-night ratio
+ private static string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a92"; // Default Daycycle (More Daylight)
private static UUID m_defaultDayAssetUUID = new UUID("5646d39e-d3d7-6aff-ed71-30fc87d64a92");
//private static string m_defaultSkyAssetID = "3ae23978-ac82-bcf3-a9cb-ba6e52dcb9ad";
private static UUID m_defaultSkyAssetUUID = new UUID("3ae23978-ac82-bcf3-a9cb-ba6e52dcb9ad");
@@ -168,10 +168,10 @@ namespace OpenSim.Region.CoreModules.World.LightShare
m_DefaultEnv = new ViewerEnvironment();
m_DefaultEnv.CycleFromOSD(oenv);
}
- catch ( Exception e)
+ catch (Exception e)
{
m_DefaultEnv = null;
- m_log.WarnFormat("[Environment {0}]: failed to decode default environment asset: {1}", m_scene.Name, e.Message);
+ m_log.Warn(string.Format("[Environment {0}] failed to decode default environment asset ", m_scene.Name), e);
}
}
}
@@ -185,16 +185,22 @@ namespace OpenSim.Region.CoreModules.World.LightShare
{
OSD oenv = OSDParser.Deserialize(senv);
ViewerEnvironment VEnv = new ViewerEnvironment();
- if(oenv is OSDArray)
+ if (oenv is OSDArray)
+ {
VEnv.FromWLOSD(oenv);
+ StoreOnRegion(VEnv);
+ m_log.InfoFormat("[Environment {0}] migrated WindLight environment settings to EEP", m_scene.Name);
+ }
else
+ {
VEnv.FromOSD(oenv);
+ }
scene.RegionEnvironment = VEnv;
m_regionEnvVersion = VEnv.version;
}
catch (Exception e)
{
- m_log.ErrorFormat("[Environment {0}] failed to load initial Environment {1}", m_scene.Name, e.Message);
+ m_log.Error(string.Format("[Environment {0}] failed to load initial Environment ", m_scene.Name), e);
scene.RegionEnvironment = null;
m_regionEnvVersion = -1;
}
@@ -246,7 +252,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare
}
catch (Exception e)
{
- m_log.ErrorFormat("[Environment {0}] failed to store Environment {1}", m_scene.Name, e.Message);
+ m_log.Error(string.Format("[Environment {0}] failed to store Environment ", m_scene.Name), e);
}
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index fbd05cd75c..09cde6964b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -6080,7 +6080,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return -2;
ScenePresence npcSP = World.GetScenePresence(npc);
- if(npc == null)
+ if((npcSP == null) || !npcSP.IsNPC)
return -3;
if (!UUID.TryParse(objkey, out UUID obj))
diff --git a/bin/ScriptSyntax.xml b/bin/ScriptSyntax.xml
index ffbbe67658..bd130952f9 100644
--- a/bin/ScriptSyntax.xml
+++ b/bin/ScriptSyntax.xml
@@ -1,4 +1,4 @@
-cd5e081a-b88a-07b6-21a5-612aab0b3398
+727420c2-45b3-4627-8c6e-5c478e6a736e