Merge branch 'master' of ssh://opensimulator.org:/var/git/opensim

This commit is contained in:
UbitUmarov
2021-03-18 18:45:28 +00:00
16 changed files with 233 additions and 47 deletions

View File

@@ -44,21 +44,25 @@ namespace OpenSim.Framework.Serialization.External
/// Deserialize settings
/// </summary>
/// <param name="serializedSettings"></param>
/// <param name="regionEnv"></param>
/// <param name="estateSettings">The Estate Settings stored in the archive will be merged into this object</param>
/// <returns></returns>
/// <exception cref="System.Xml.XmlException"></exception>
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);
}
/// <summary>
/// Deserialize settings
/// </summary>
/// <param name="serializedSettings"></param>
/// <param name="regionEnv"></param>
/// <param name="estateSettings">The Estate Settings stored in the archive will be merged into this object</param>
/// <returns></returns>
/// <exception cref="System.Xml.XmlException"></exception>
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();

View File

@@ -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));

View File

@@ -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(