aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Servers
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/Servers')
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs47
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs3
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs3
3 files changed, 36 insertions, 17 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 57c9d7c..6121371 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -1449,7 +1449,8 @@ namespace OpenSim.Framework.Servers.HttpServer
1449 internal byte[] DoHTTPGruntWork(Hashtable responsedata, OSHttpResponse response) 1449 internal byte[] DoHTTPGruntWork(Hashtable responsedata, OSHttpResponse response)
1450 { 1450 {
1451 int responsecode; 1451 int responsecode;
1452 string responseString; 1452 string responseString = String.Empty;
1453 byte[] responseData = null;
1453 string contentType; 1454 string contentType;
1454 1455
1455 if (responsedata == null) 1456 if (responsedata == null)
@@ -1465,7 +1466,10 @@ namespace OpenSim.Framework.Servers.HttpServer
1465 { 1466 {
1466 //m_log.Info("[BASE HTTP SERVER]: Doing HTTP Grunt work with response"); 1467 //m_log.Info("[BASE HTTP SERVER]: Doing HTTP Grunt work with response");
1467 responsecode = (int)responsedata["int_response_code"]; 1468 responsecode = (int)responsedata["int_response_code"];
1468 responseString = (string)responsedata["str_response_string"]; 1469 if (responsedata["bin_response_data"] != null)
1470 responseData = (byte[])responsedata["bin_response_data"];
1471 else
1472 responseString = (string)responsedata["str_response_string"];
1469 contentType = (string)responsedata["content_type"]; 1473 contentType = (string)responsedata["content_type"];
1470 } 1474 }
1471 catch 1475 catch
@@ -1520,25 +1524,40 @@ namespace OpenSim.Framework.Servers.HttpServer
1520 1524
1521 response.AddHeader("Content-Type", contentType); 1525 response.AddHeader("Content-Type", contentType);
1522 1526
1527 if (responsedata.ContainsKey("headers"))
1528 {
1529 Hashtable headerdata = (Hashtable)responsedata["headers"];
1530
1531 foreach (string header in headerdata.Keys)
1532 response.AddHeader(header, (string)headerdata[header]);
1533 }
1534
1523 byte[] buffer; 1535 byte[] buffer;
1524 1536
1525 if (!(contentType.Contains("image") 1537 if (responseData != null)
1526 || contentType.Contains("x-shockwave-flash")
1527 || contentType.Contains("application/x-oar")
1528 || contentType.Contains("application/vnd.ll.mesh")))
1529 { 1538 {
1530 // Text 1539 buffer = responseData;
1531 buffer = Encoding.UTF8.GetBytes(responseString);
1532 } 1540 }
1533 else 1541 else
1534 { 1542 {
1535 // Binary! 1543 if (!(contentType.Contains("image")
1536 buffer = Convert.FromBase64String(responseString); 1544 || contentType.Contains("x-shockwave-flash")
1537 } 1545 || contentType.Contains("application/x-oar")
1546 || contentType.Contains("application/vnd.ll.mesh")))
1547 {
1548 // Text
1549 buffer = Encoding.UTF8.GetBytes(responseString);
1550 }
1551 else
1552 {
1553 // Binary!
1554 buffer = Convert.FromBase64String(responseString);
1555 }
1538 1556
1539 response.SendChunked = false; 1557 response.SendChunked = false;
1540 response.ContentLength64 = buffer.Length; 1558 response.ContentLength64 = buffer.Length;
1541 response.ContentEncoding = Encoding.UTF8; 1559 response.ContentEncoding = Encoding.UTF8;
1560 }
1542 1561
1543 return buffer; 1562 return buffer;
1544 } 1563 }
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs
index c24a000..a80b1d7 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceEventArgs.cs
@@ -52,7 +52,8 @@ namespace OpenSim.Framework.Servers.HttpServer
52 { 52 {
53 Normal = 0, 53 Normal = 0,
54 LslHttp = 1, 54 LslHttp = 1,
55 Inventory = 2 55 Inventory = 2,
56 Texture = 3
56 } 57 }
57 58
58 public PollServiceEventArgs( 59 public PollServiceEventArgs(
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index a1dee4e..db088e7 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -231,8 +231,7 @@ namespace OpenSim.Framework.Servers.HttpServer
231 { 231 {
232 if (m_running) 232 if (m_running)
233 { 233 {
234 if (req.PollServiceArgs.Type == PollServiceEventArgs.EventType.LslHttp || 234 if (req.PollServiceArgs.Type != PollServiceEventArgs.EventType.Normal)
235 req.PollServiceArgs.Type == PollServiceEventArgs.EventType.Inventory)
236 { 235 {
237 m_requests.Enqueue(req); 236 m_requests.Enqueue(req);
238 } 237 }