From 4ad892e0906fa10f6fe22c570759b9a690249643 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 29 Nov 2020 12:29:18 +0000 Subject: [PATCH] reenable keepalive local override, + cosmetics --- .../Framework/Servers/HttpServer/BaseHttpServer.cs | 14 +++++++++++--- .../HttpServer/OSHttpServer/HttpResponse.cs | 9 +++++---- .../Servers/HttpServer/PollServiceEventArgs.cs | 2 +- .../ClientStack/Linden/Caps/GetAssetsModule.cs | 3 ++- .../Linden/Caps/WebFetchInvDescModule.cs | 1 + 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 659353df31..8be8493097 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -610,8 +610,16 @@ namespace OpenSim.Framework.Servers.HttpServer { psEvArgs.RequestsReceived++; PollServiceHttpRequest psreq = new PollServiceHttpRequest(psEvArgs, request); - psEvArgs.Request?.Invoke(psreq.RequestID, osRequest); - m_pollServiceManager.Enqueue(psreq); + if(psEvArgs.Request == null) + m_pollServiceManager.Enqueue(psreq); + else + { + OSHttpResponse resp = psEvArgs.Request.Invoke(psreq.RequestID, osRequest); + if(resp == null) + m_pollServiceManager.Enqueue(psreq); + else + resp.Send(); + } psreq = null; } else @@ -621,7 +629,7 @@ namespace OpenSim.Framework.Servers.HttpServer } catch (Exception e) { - m_log.Error(String.Format("[BASE HTTP SERVER]: OnRequest() failed: {0} ", e.Message), e); + m_log.Error(string.Format("[BASE HTTP SERVER]: OnRequest() failed: {0} ", e.Message), e); } } diff --git a/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpResponse.cs b/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpResponse.cs index 625fbef4d3..9bc6f87282 100644 --- a/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpResponse.cs +++ b/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpResponse.cs @@ -68,7 +68,7 @@ namespace OSHttpServer public ConnectionType Connection { get { return m_Connetion; } - set { return; } + set { m_Connetion = value; } } private int m_priority = 0; @@ -327,21 +327,22 @@ namespace OSHttpServer } m_headerBytes = GetHeaders(); - + /* if (RawBuffer != null) { int tlen = m_headerBytes.Length + RawBufferLen; if(RawBufferLen > 0 && tlen < 16384) { byte[] tmp = new byte[tlen]; - Array.Copy(m_headerBytes, tmp, m_headerBytes.Length); - Array.Copy(RawBuffer, RawBufferStart, tmp, m_headerBytes.Length, RawBufferLen); + Buffer.BlockCopy(m_headerBytes, 0, tmp, 0, m_headerBytes.Length); + Buffer.BlockCopy(RawBuffer, RawBufferStart, tmp, m_headerBytes.Length, RawBufferLen); m_headerBytes = null; RawBuffer = tmp; RawBufferStart = 0; RawBufferLen = tlen; } } + */ m_context.StartSendResponse(this); } diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs index 936605c146..e7b44b2936 100644 --- a/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs +++ b/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs @@ -31,7 +31,7 @@ using OpenMetaverse; namespace OpenSim.Framework.Servers.HttpServer { - public delegate void RequestMethod(UUID ID, OSHttpRequest request); + public delegate OSHttpResponse RequestMethod(UUID ID, OSHttpRequest request); public delegate bool HasEventsMethod(UUID requestID, UUID pId); public delegate Hashtable GetEventsMethod(UUID requestID, UUID pId); diff --git a/OpenSim/Region/ClientStack/Linden/Caps/GetAssetsModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/GetAssetsModule.cs index 10e7b326cd..bda39e6f09 100755 --- a/OpenSim/Region/ClientStack/Linden/Caps/GetAssetsModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/GetAssetsModule.cs @@ -138,7 +138,7 @@ namespace OpenSim.Region.ClientStack.Linden lock(m_loadLock) { - if (m_assetService == null && m_NumberScenes == 0) + if (m_assetService == null) { m_assetService = s.RequestModuleInterface(); // We'll reuse the same handler for all requests. @@ -300,6 +300,7 @@ namespace OpenSim.Region.ClientStack.Linden reqinfo.request = request; m_queue.Add(reqinfo); + return null; }; // this should never happen except possible on shutdown diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs index d158e179c6..02cd2997d7 100755 --- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs @@ -304,6 +304,7 @@ namespace OpenSim.Region.ClientStack.Linden reqinfo.reqID = requestID; reqinfo.request = request; m_queue.Add(reqinfo); + return null; }; NoEvents = (x, y) =>