Merge branch 'avination' into careminster

Conflicts:
	OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs
This commit is contained in:
Melanie
2012-06-29 22:11:49 +01:00
11 changed files with 89 additions and 41 deletions

View File

@@ -41,6 +41,7 @@ namespace OpenSim.Framework.Servers.HttpServer
private readonly BaseHttpServer m_server;
private static Queue m_requests = Queue.Synchronized(new Queue());
private static ManualResetEvent m_ev = new ManualResetEvent(false);
private uint m_WorkerThreadCount = 0;
private Thread[] m_workerThreads;
private PollServiceWorkerThread[] m_PollServiceWorkerThreads;
@@ -90,15 +91,17 @@ namespace OpenSim.Framework.Servers.HttpServer
{
lock (m_requests)
m_requests.Enqueue(req);
m_ev.Set();
}
public void ThreadStart()
{
while (m_running)
{
m_ev.WaitOne(1000);
m_ev.Reset();
Watchdog.UpdateThread();
ProcessQueuedRequests();
Thread.Sleep(1000);
}
}
@@ -154,4 +157,4 @@ namespace OpenSim.Framework.Servers.HttpServer
m_running = false;
}
}
}
}

View File

@@ -89,8 +89,15 @@ namespace OpenSim.Framework.Servers.HttpServer
continue;
}
Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
DoHTTPGruntWork(m_server, req, responsedata);
try
{
Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
DoHTTPGruntWork(m_server, req, responsedata);
}
catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream
{
// Ignore it, no need to reply
}
}
else
{
@@ -161,4 +168,4 @@ namespace OpenSim.Framework.Servers.HttpServer
}
}
}
}
}