aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs57
1 files changed, 47 insertions, 10 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index 3a14b6f..4fe783d 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -290,9 +290,8 @@ namespace OpenSim.Framework.Servers.HttpServer
290 { 290 {
291 foreach (PollServiceHttpRequest req in m_retryRequests) 291 foreach (PollServiceHttpRequest req in m_retryRequests)
292 { 292 {
293 m_server.DoHTTPGruntWork( 293 DoHTTPGruntWork(m_server,req,
294 req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id), 294 req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id));
295 new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext));
296 } 295 }
297 } 296 }
298 catch 297 catch
@@ -313,9 +312,8 @@ namespace OpenSim.Framework.Servers.HttpServer
313 try 312 try
314 { 313 {
315 wreq = m_requests.Dequeue(0); 314 wreq = m_requests.Dequeue(0);
316 m_server.DoHTTPGruntWork( 315 DoHTTPGruntWork(m_server,wreq,
317 wreq.PollServiceArgs.NoEvents(wreq.RequestID, wreq.PollServiceArgs.Id), 316 wreq.PollServiceArgs.NoEvents(wreq.RequestID, wreq.PollServiceArgs.Id));
318 new OSHttpResponse(new HttpResponse(wreq.HttpContext, wreq.Request), wreq.HttpContext));
319 } 317 }
320 catch 318 catch
321 { 319 {
@@ -359,8 +357,7 @@ namespace OpenSim.Framework.Servers.HttpServer
359 try 357 try
360 { 358 {
361 Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd()); 359 Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
362 m_server.DoHTTPGruntWork(responsedata, 360 DoHTTPGruntWork(m_server, req, responsedata);
363 new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext));
364 } 361 }
365 catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream 362 catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream
366 { 363 {
@@ -375,8 +372,8 @@ namespace OpenSim.Framework.Servers.HttpServer
375 // if ((Environment.TickCount - req.RequestTime) > m_timeout) 372 // if ((Environment.TickCount - req.RequestTime) > m_timeout)
376 if ((Environment.TickCount - req.RequestTime) > req.PollServiceArgs.TimeOutms) 373 if ((Environment.TickCount - req.RequestTime) > req.PollServiceArgs.TimeOutms)
377 { 374 {
378 m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id), 375 DoHTTPGruntWork(m_server, req,
379 new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext)); 376 req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id));
380 } 377 }
381 else 378 else
382 { 379 {
@@ -391,6 +388,46 @@ namespace OpenSim.Framework.Servers.HttpServer
391 } 388 }
392 } 389 }
393 } 390 }
391
392 // DoHTTPGruntWork changed, not sending response
393 // do the same work around as core
394
395 internal static void DoHTTPGruntWork(BaseHttpServer server, PollServiceHttpRequest req, Hashtable responsedata)
396 {
397 OSHttpResponse response
398 = new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext);
399
400 byte[] buffer = server.DoHTTPGruntWork(responsedata, response);
401
402 response.SendChunked = false;
403 response.ContentLength64 = buffer.Length;
404 response.ContentEncoding = Encoding.UTF8;
405
406 try
407 {
408 response.OutputStream.Write(buffer, 0, buffer.Length);
409 }
410 catch (Exception ex)
411 {
412 m_log.Warn(string.Format("[POLL SERVICE WORKER THREAD]: Error ", ex));
413 }
414 finally
415 {
416 //response.OutputStream.Close();
417 try
418 {
419 response.OutputStream.Flush();
420 response.Send();
421
422 //if (!response.KeepAlive && response.ReuseContext)
423 // response.FreeContext();
424 }
425 catch (Exception e)
426 {
427 m_log.Warn(String.Format("[POLL SERVICE WORKER THREAD]: Error ", e));
428 }
429 }
430 }
394 } 431 }
395} 432}
396 433