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