From 9c1ec98415caec6eb14e2c92a9cc22c4a2918d10 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 22 Jul 2013 21:45:57 -0700 Subject: [PATCH] When LLSD handlers are not found, the server should return a 404 instead of a valid response saying 'No handler registered for LLSD Requests' --- OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 5 ++++- OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index c4e569d6ee..50fbe0ade9 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -1189,6 +1189,7 @@ namespace OpenSim.Framework.Servers.HttpServer OSD llsdResponse = null; bool LegacyLLSDLoginLibOMV = (requestBody.Contains("passwd") && requestBody.Contains("mac") && requestBody.Contains("viewer_digest")); + bool nohandler = false; if (requestBody.Length == 0) // Get Request @@ -1227,17 +1228,19 @@ namespace OpenSim.Framework.Servers.HttpServer { // Oops, no handler for this.. give em the failed message llsdResponse = GenerateNoLLSDHandlerResponse(); + nohandler = true; } } } else { llsdResponse = GenerateNoLLSDHandlerResponse(); + nohandler = true; } byte[] buffer = new byte[0]; - if (llsdResponse.ToString() == "shutdown404!") + if (llsdResponse.ToString() == "shutdown404!" || nohandler) { response.ContentType = "text/plain"; response.StatusCode = 404; diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index 59c2a5a18c..248fec700f 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs @@ -1627,6 +1627,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP bool ready = false; while (!ready && count-- > 0) { + // Let's make sure there is an active client attached to a scene presence, + // otherwise there won't be any handlers for this packet if (m_scene.TryGetClient(endPoint, out client) && client.IsActive && client.SceneAgent != null) { LLClientView llClientView = (LLClientView)client;