diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 20bdf17320..1ac50598b4 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -461,7 +461,8 @@ namespace OpenSim.Framework.Servers.HttpServer } OSHttpResponse resp = new OSHttpResponse(new HttpResponse(context, request),context); - resp.ReuseContext = true; +// resp.ReuseContext = true; + resp.ReuseContext = false; HandleRequest(req, resp); // !!!HACK ALERT!!! @@ -1954,7 +1955,7 @@ namespace OpenSim.Framework.Servers.HttpServer // Long Poll Service Manager with 3 worker threads a 25 second timeout for no events - PollServiceRequestManager = new PollServiceRequestManager(this, performPollResponsesAsync, 3, 25000); + PollServiceRequestManager = new PollServiceRequestManager(this, performPollResponsesAsync, 2, 25000); PollServiceRequestManager.Start(); HTTPDRunning = true; diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs index 0e4323acd6..ffcad0ffdf 100644 --- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs +++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs @@ -73,7 +73,7 @@ namespace OpenSim.Framework.Servers.HttpServer STPStartInfo startInfo = new STPStartInfo(); startInfo.IdleTimeout = 30000; - startInfo.MaxWorkerThreads = 15; + startInfo.MaxWorkerThreads = 20; startInfo.MinWorkerThreads = 1; startInfo.ThreadPriority = ThreadPriority.Normal; startInfo.StartSuspended = true; @@ -160,7 +160,6 @@ namespace OpenSim.Framework.Servers.HttpServer } } - public void EnqueueInt(PollServiceHttpRequest req) { if (m_running) @@ -272,7 +271,7 @@ namespace OpenSim.Framework.Servers.HttpServer { Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id); - if (req.PollServiceArgs.Type == PollServiceEventArgs.EventType.LongPoll) // This is the event queue + m_threadPool.QueueWorkItem(x => { try { @@ -283,32 +282,27 @@ namespace OpenSim.Framework.Servers.HttpServer { // Ignore it, no need to reply } - } - else - { - m_threadPool.QueueWorkItem(x => - { - try - { - req.DoHTTPGruntWork(m_server, responsedata); - byContextDequeue(req); - } - catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream - { - // Ignore it, no need to reply - } - - return null; - }, null); - } + return null; + }, null); } else { if ((Environment.TickCount - req.RequestTime) > req.PollServiceArgs.TimeOutms) { - req.DoHTTPGruntWork(m_server, - req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id)); - byContextDequeue(req); + m_threadPool.QueueWorkItem(x => + { + try + { + req.DoHTTPGruntWork(m_server, + req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id)); + byContextDequeue(req); + } + catch (ObjectDisposedException) + { + // Ignore it, no need to reply + } + return null; + }, null); } else {