From b4dcdffb5094c488a98acbe675b333c3bd4cc570 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Tue, 16 Mar 2010 11:50:22 -0700
Subject: Fixed several unhandled exceptions and performance issues with
PrimitiveBaseShape.Textures. This really should be moved from a property to a
method if it is going to decode a byte[] into a TextureEntry each time
---
OpenSim/Framework/PrimitiveBaseShape.cs | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Framework')
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs
index 6a38278..9c2a4f9 100644
--- a/OpenSim/Framework/PrimitiveBaseShape.cs
+++ b/OpenSim/Framework/PrimitiveBaseShape.cs
@@ -227,8 +227,12 @@ namespace OpenSim.Framework
{
get
{
- //m_log.DebugFormat("[PRIMITIVE BASE SHAPE]: get m_textureEntry length {0}", m_textureEntry.Length);
- return new Primitive.TextureEntry(m_textureEntry, 0, m_textureEntry.Length);
+ //m_log.DebugFormat("[SHAPE]: get m_textureEntry length {0}", m_textureEntry.Length);
+ try { return new Primitive.TextureEntry(m_textureEntry, 0, m_textureEntry.Length); }
+ catch { }
+
+ m_log.Warn("[SHAPE]: Failed to decode texture, length=" + ((m_textureEntry != null) ? m_textureEntry.Length : 0));
+ return new Primitive.TextureEntry(null);
}
set { m_textureEntry = value.GetBytes(); }
--
cgit v1.1
From a647f5008770c4b5ee37190f07a1b6a9aa1ba272 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 16 Mar 2010 22:58:12 +0000
Subject: minor logging changes to BaseHttpServer, OSHttpRequest
---
.../Framework/Servers/HttpServer/BaseHttpServer.cs | 76 +++++++++++++---------
.../Framework/Servers/HttpServer/OSHttpRequest.cs | 12 ++++
2 files changed, 58 insertions(+), 30 deletions(-)
(limited to 'OpenSim/Framework')
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 9a6ef77..350c041 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -42,6 +42,7 @@ using Nwc.XmlRpc;
using OpenMetaverse.StructuredData;
using CoolHTTPListener = HttpServer.HttpListener;
using HttpListener=System.Net.HttpListener;
+using LogPrio=HttpServer.LogPrio;
namespace OpenSim.Framework.Servers.HttpServer
{
@@ -294,7 +295,7 @@ namespace OpenSim.Framework.Servers.HttpServer
headervals[headername] = req.Headers[headername];
}
- keysvals.Add("headers",headervals);
+ keysvals.Add("headers", headervals);
keysvals.Add("querystringkeys", querystringkeys);
psEvArgs.Request(psreq.RequestID, keysvals);
@@ -341,7 +342,7 @@ namespace OpenSim.Framework.Servers.HttpServer
// the request can be passed through to the other handlers. This is a low
// probability event; if a request is matched it is normally expected to be
// handled
- //m_log.Debug("[BASE HTTP SERVER]: Handling Request" + request.RawUrl);
+// m_log.Debug("[BASE HTTP SERVER]: Handling request to " + request.RawUrl);
IHttpAgentHandler agentHandler;
@@ -496,7 +497,8 @@ namespace OpenSim.Framework.Servers.HttpServer
{
case null:
case "text/html":
- //m_log.Info("[Debug BASE HTTP SERVER]: found a text/html content type");
+// m_log.DebugFormat(
+// "[BASE HTTP SERVER]: Found a text/html content type for request {0}", request.RawUrl);
HandleHTTPRequest(request, response);
return;
@@ -524,10 +526,11 @@ namespace OpenSim.Framework.Servers.HttpServer
HandleLLSDRequests(request, response);
return;
}
- //m_log.Info("[Debug BASE HTTP SERVER]: Checking for HTTP Handler");
+
+// m_log.DebugFormat("[BASE HTTP SERVER]: Checking for HTTP Handler for request {0}", request.RawUrl);
if (DoWeHaveAHTTPHandler(request.RawUrl))
{
- //m_log.Info("[Debug BASE HTTP SERVER]: found HTTP Handler");
+// m_log.DebugFormat("[BASE HTTP SERVER]: Found HTTP Handler for request {0}", request.RawUrl);
HandleHTTPRequest(request, response);
return;
}
@@ -623,7 +626,7 @@ namespace OpenSim.Framework.Servers.HttpServer
private bool TryGetHTTPHandler(string handlerKey, out GenericHTTPMethod HTTPHandler)
{
- //m_log.DebugFormat("[BASE HTTP HANDLER]: Looking for HTTP handler for {0}", handlerKey);
+// m_log.DebugFormat("[BASE HTTP HANDLER]: Looking for HTTP handler for {0}", handlerKey);
string bestMatch = null;
@@ -943,7 +946,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (IOException e)
{
- m_log.DebugFormat("[BASE HTTP SERVER]: LLSD IOException {0}.", e);
+ m_log.WarnFormat("[BASE HTTP SERVER]: LLSD IOException {0}.", e);
}
catch (SocketException e)
{
@@ -1218,7 +1221,11 @@ namespace OpenSim.Framework.Servers.HttpServer
}
public void HandleHTTPRequest(OSHttpRequest request, OSHttpResponse response)
- {
+ {
+// m_log.DebugFormat(
+// "[BASE HTTP SERVER]: HandleHTTPRequest for request to {0}, method {1}",
+// request.RawUrl, request.HttpMethod);
+
switch (request.HttpMethod)
{
case "OPTIONS":
@@ -1233,6 +1240,8 @@ namespace OpenSim.Framework.Servers.HttpServer
private void HandleContentVerbs(OSHttpRequest request, OSHttpResponse response)
{
+// m_log.DebugFormat("[BASE HTTP SERVER]: HandleContentVerbs for request to {0}", request.RawUrl);
+
// This is a test. There's a workable alternative.. as this way sucks.
// We'd like to put this into a text file parhaps that's easily editable.
//
@@ -1273,13 +1282,15 @@ namespace OpenSim.Framework.Servers.HttpServer
foreach (string queryname in querystringkeys)
{
+// m_log.DebugFormat(
+// "[BASE HTTP SERVER]: Got query paremeter {0}={1}", queryname, request.QueryString[queryname]);
keysvals.Add(queryname, request.QueryString[queryname]);
requestVars.Add(queryname, keysvals[queryname]);
}
foreach (string headername in rHeaders)
{
- //m_log.Warn("[HEADER]: " + headername + "=" + request.Headers[headername]);
+// m_log.Debug("[BASE HTTP SERVER]: " + headername + "=" + request.Headers[headername]);
headervals[headername] = request.Headers[headername];
}
@@ -1288,15 +1299,16 @@ namespace OpenSim.Framework.Servers.HttpServer
host = (string)headervals["Host"];
}
- keysvals.Add("headers",headervals);
+ keysvals.Add("headers", headervals);
keysvals.Add("querystringkeys", querystringkeys);
keysvals.Add("requestvars", requestVars);
+// keysvals.Add("form", request.Form);
if (keysvals.Contains("method"))
{
- //m_log.Warn("[HTTP]: Contains Method");
+// m_log.Debug("[BASE HTTP SERVER]: Contains Method");
string method = (string) keysvals["method"];
- //m_log.Warn("[HTTP]: " + requestBody);
+// m_log.Debug("[BASE HTTP SERVER]: " + requestBody);
GenericHTTPMethod requestprocessor;
bool foundHandler = TryGetHTTPHandler(method, out requestprocessor);
if (foundHandler)
@@ -1308,13 +1320,12 @@ namespace OpenSim.Framework.Servers.HttpServer
}
else
{
- //m_log.Warn("[HTTP]: Handler Not Found");
+// m_log.Warn("[BASE HTTP SERVER]: Handler Not Found");
SendHTML404(response, host);
}
}
else
{
-
GenericHTTPMethod requestprocessor;
bool foundHandler = TryGetHTTPHandlerPathBased(request.RawUrl, out requestprocessor);
if (foundHandler)
@@ -1326,7 +1337,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
else
{
- //m_log.Warn("[HTTP]: Handler Not Found");
+// m_log.Warn("[BASE HTTP SERVER]: Handler Not Found2");
SendHTML404(response, host);
}
}
@@ -1374,8 +1385,7 @@ namespace OpenSim.Framework.Servers.HttpServer
{
if (String.IsNullOrEmpty(bestMatch) || searchquery.Length > bestMatch.Length)
{
- // You have to specifically register for '/' and to get it, you must specificaly request it
- //
+ // You have to specifically register for '/' and to get it, you must specifically request it
if (pattern == "/" && searchquery == "/" || pattern != "/")
bestMatch = pattern;
}
@@ -1814,30 +1824,36 @@ namespace OpenSim.Framework.Servers.HttpServer
///
/// Relays HttpServer log messages to our own logging mechanism.
///
- /// There is also a UseTraceLogs line in this file that can be uncommented for more detailed log information
+ /// To use this you must uncomment the switch section
+ ///
+ /// You may also be able to get additional trace information from HttpServer if you uncomment the UseTraceLogs
+ /// property in StartHttp() for the HttpListener
public class HttpServerLogWriter : ILogWriter
{
- //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public void Write(object source, LogPrio priority, string message)
{
/*
switch (priority)
{
- case HttpServer.LogPrio.Debug:
- m_log.DebugFormat("[{0}]: {1}", source.ToString(), message);
+ case LogPrio.Trace:
+ m_log.DebugFormat("[{0}]: {1}", source, message);
+ break;
+ case LogPrio.Debug:
+ m_log.DebugFormat("[{0}]: {1}", source, message);
break;
- case HttpServer.LogPrio.Error:
- m_log.ErrorFormat("[{0}]: {1}", source.ToString(), message);
+ case LogPrio.Error:
+ m_log.ErrorFormat("[{0}]: {1}", source, message);
break;
- case HttpServer.LogPrio.Info:
- m_log.InfoFormat("[{0}]: {1}", source.ToString(), message);
+ case LogPrio.Info:
+ m_log.InfoFormat("[{0}]: {1}", source, message);
break;
- case HttpServer.LogPrio.Warning:
- m_log.WarnFormat("[{0}]: {1}", source.ToString(), message);
+ case LogPrio.Warning:
+ m_log.WarnFormat("[{0}]: {1}", source, message);
break;
- case HttpServer.LogPrio.Fatal:
- m_log.ErrorFormat("[{0}]: FATAL! - {1}", source.ToString(), message);
+ case LogPrio.Fatal:
+ m_log.ErrorFormat("[{0}]: FATAL! - {1}", source, message);
break;
default:
break;
@@ -1847,4 +1863,4 @@ namespace OpenSim.Framework.Servers.HttpServer
return;
}
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs b/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs
index bcfb0a4..e354dfb 100644
--- a/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs
+++ b/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs
@@ -127,6 +127,11 @@ namespace OpenSim.Framework.Servers.HttpServer
}
private Hashtable _query;
+ ///
+ /// POST request values, if applicable
+ ///
+// public Hashtable Form { get; private set; }
+
public string RawUrl
{
get { return _request.Uri.AbsolutePath; }
@@ -228,6 +233,13 @@ namespace OpenSim.Framework.Servers.HttpServer
{
_log.ErrorFormat("[OSHttpRequest]: Error parsing querystring");
}
+
+// Form = new Hashtable();
+// foreach (HttpInputItem item in req.Form)
+// {
+// _log.DebugFormat("[OSHttpRequest]: Got form item {0}={1}", item.Name, item.Value);
+// Form.Add(item.Name, item.Value);
+// }
}
public override string ToString()
--
cgit v1.1