From b6b0bc7b32ec5009eb482d51d0e9ff711e6ec022 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 29 Nov 2011 16:15:52 +0000
Subject: Add "debug http" command for currently simple extra debug logging of
non-event queue inbound http requests to a simulator
---
.../Framework/Servers/HttpServer/BaseHttpServer.cs | 55 +++++++++++++++++-----
OpenSim/Region/Application/OpenSim.cs | 26 +++++++++-
2 files changed, 67 insertions(+), 14 deletions(-)
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 3aed9a8..689a292 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -79,6 +79,11 @@ namespace OpenSim.Framework.Servers.HttpServer
private PollServiceRequestManager m_PollServiceManager;
+ ///
+ /// Control the printing of certain debug messages.
+ ///
+ public int DebugLevel { get; set; }
+
public uint SSLPort
{
get { return m_sslport; }
@@ -442,17 +447,20 @@ namespace OpenSim.Framework.Servers.HttpServer
string path = request.RawUrl;
string handlerKey = GetHandlerKey(request.HttpMethod, path);
-// m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
+ if (DebugLevel >= 1)
+ m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
if (TryGetStreamHandler(handlerKey, out requestHandler))
{
- //m_log.Debug("[BASE HTTP SERVER]: Found Stream Handler");
+ if (DebugLevel >= 2)
+ m_log.DebugFormat(
+ "[BASE HTTP SERVER]: Found stream handler {0} for request to {1}", handlerKey, path);
+
// Okay, so this is bad, but should be considered temporary until everything is IStreamHandler.
byte[] buffer = null;
response.ContentType = requestHandler.ContentType; // Lets do this defaulting before in case handler has varying content type.
-
if (requestHandler is IStreamedRequestHandler)
{
IStreamedRequestHandler streamedRequestHandler = requestHandler as IStreamedRequestHandler;
@@ -556,6 +564,7 @@ namespace OpenSim.Framework.Servers.HttpServer
{
m_log.Warn("[BASE HTTP SERVER]: XmlRpcRequest issue: " + e.Message);
}
+
return;
}
@@ -566,7 +575,11 @@ namespace OpenSim.Framework.Servers.HttpServer
if (strAccept.Contains("application/llsd+xml") ||
strAccept.Contains("application/llsd+json"))
{
- //m_log.Info("[Debug BASE HTTP SERVER]: Found an application/llsd+xml accept header");
+ if (DebugLevel >= 2)
+ m_log.DebugFormat(
+ "[BASE HTTP SERVER]: Found an application/llsd+xml accept header for request to {0}",
+ path);
+
HandleLLSDRequests(request, response);
return;
}
@@ -577,15 +590,24 @@ namespace OpenSim.Framework.Servers.HttpServer
{
case null:
case "text/html":
-// m_log.DebugFormat(
-// "[BASE HTTP SERVER]: Found a text/html content type for request {0}", request.RawUrl);
+
+ if (DebugLevel >= 2)
+ m_log.DebugFormat(
+ "[BASE HTTP SERVER]: Found a {0} content type for request to {1}",
+ request.ContentType, path);
+
HandleHTTPRequest(request, response);
return;
case "application/llsd+xml":
case "application/xml+llsd":
case "application/llsd+json":
- //m_log.Info("[Debug BASE HTTP SERVER]: found a application/llsd+xml content type");
+
+ if (DebugLevel >= 2)
+ m_log.DebugFormat(
+ "[BASE HTTP SERVER]: Found a {0} content type for request to {1}",
+ request.ContentType, path);
+
HandleLLSDRequests(request, response);
return;
@@ -602,7 +624,10 @@ namespace OpenSim.Framework.Servers.HttpServer
//m_log.Info("[Debug BASE HTTP SERVER]: Checking for LLSD Handler");
if (DoWeHaveALLSDHandler(request.RawUrl))
{
- //m_log.Info("[Debug BASE HTTP SERVER]: Found LLSD Handler");
+ if (DebugLevel >= 2)
+ m_log.DebugFormat(
+ "[BASE HTTP SERVER]: Found an LLSD handler for request to {0}", path);
+
HandleLLSDRequests(request, response);
return;
}
@@ -610,12 +635,18 @@ namespace OpenSim.Framework.Servers.HttpServer
// m_log.DebugFormat("[BASE HTTP SERVER]: Checking for HTTP Handler for request {0}", request.RawUrl);
if (DoWeHaveAHTTPHandler(request.RawUrl))
{
-// m_log.DebugFormat("[BASE HTTP SERVER]: Found HTTP Handler for request {0}", request.RawUrl);
+ if (DebugLevel >= 2)
+ m_log.DebugFormat(
+ "[BASE HTTP SERVER]: Found an HTTP handler for request to {0}", path);
+
HandleHTTPRequest(request, response);
return;
}
- //m_log.Info("[Debug BASE HTTP SERVER]: Generic XMLRPC");
+ if (DebugLevel >= 2)
+ m_log.DebugFormat(
+ "[BASE HTTP SERVER]: Treating request to {0} as a generic XMLRPC request", path);
+
// generic login request.
HandleXmlRpcRequests(request, response);
@@ -978,7 +1009,6 @@ namespace OpenSim.Framework.Servers.HttpServer
if (llsdRequest != null)// && m_defaultLlsdHandler != null)
{
-
LLSDMethod llsdhandler = null;
if (TryGetLLSDHandler(request.RawUrl, out llsdhandler) && !LegacyLLSDLoginLibOMV)
@@ -1002,13 +1032,14 @@ namespace OpenSim.Framework.Servers.HttpServer
llsdResponse = GenerateNoLLSDHandlerResponse();
}
}
-
}
else
{
llsdResponse = GenerateNoLLSDHandlerResponse();
}
+
byte[] buffer = new byte[0];
+
if (llsdResponse.ToString() == "shutdown404!")
{
response.ContentType = "text/plain";
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index ee26e4f..f4ed32e 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -242,6 +242,14 @@ namespace OpenSim
+ "If an avatar name is given then only packets from that avatar are logged",
Debug);
+ m_console.Commands.AddCommand("region", false, "debug http",
+ "debug http ",
+ "Turn on inbound http request debugging for everything except the event queue (see debug eq)."
+ + "If level >= 2 then the handler used to service the request is logged.\n"
+ + "If level >= 1 then incoming HTTP requests are logged.\n"
+ + "If level <= 0 then no extra http logging is done.\n",
+ Debug);
+
m_console.Commands.AddCommand("region", false, "debug scene",
"debug scene ",
"Turn on scene debugging", Debug);
@@ -889,10 +897,24 @@ namespace OpenSim
}
else
{
- MainConsole.Instance.Output("packet debug should be 0..255");
+ MainConsole.Instance.Output("Usage: debug packet 0..255");
+ }
+ }
+
+ break;
+
+ case "http":
+ if (args.Length == 3)
+ {
+ int newDebug;
+ if (int.TryParse(args[2], out newDebug))
+ {
+ MainServer.Instance.DebugLevel = newDebug;
+ break;
}
}
+ MainConsole.Instance.Output("Usage: debug http 0..2");
break;
case "scene":
@@ -917,7 +939,7 @@ namespace OpenSim
}
else
{
- MainConsole.Instance.Output("debug scene (where inside <> is true/false)");
+ MainConsole.Instance.Output("Usage: debug scene (where inside <> is true/false)");
}
break;
--
cgit v1.1