aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTom2011-05-26 03:42:01 -0700
committerTom2011-05-26 03:42:01 -0700
commitb000d9ba724ae12ae27c49dd94e36d4592bd6c26 (patch)
tree75ed29bca15665bd73a98a9b363bc0a122b5d050
parentIf a response cannot be obtained (the script has no handler) return a more fr... (diff)
downloadopensim-SC-b000d9ba724ae12ae27c49dd94e36d4592bd6c26.zip
opensim-SC-b000d9ba724ae12ae27c49dd94e36d4592bd6c26.tar.gz
opensim-SC-b000d9ba724ae12ae27c49dd94e36d4592bd6c26.tar.bz2
opensim-SC-b000d9ba724ae12ae27c49dd94e36d4592bd6c26.tar.xz
Some additional protection, it seems that responsedata needs to be locked, but I can't immediately see where it's being accessed from another thread. For now, this will protect the server
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs19
-rw-r--r--OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs15
2 files changed, 27 insertions, 7 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 36c6c75..c12d666 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -1523,11 +1523,20 @@ namespace OpenSim.Framework.Servers.HttpServer
1523 } 1523 }
1524 else 1524 else
1525 { 1525 {
1526 1526 try
1527 //m_log.Info("[BASE HTTP SERVER]: Doing HTTP Grunt work with response"); 1527 {
1528 responsecode = (int)responsedata["int_response_code"]; 1528 //m_log.Info("[BASE HTTP SERVER]: Doing HTTP Grunt work with response");
1529 responseString = (string)responsedata["str_response_string"]; 1529 responsecode = (int)responsedata["int_response_code"];
1530 contentType = (string)responsedata["content_type"]; 1530 responseString = (string)responsedata["str_response_string"];
1531 contentType = (string)responsedata["content_type"];
1532 }
1533 catch
1534 {
1535 responsecode = 500;
1536 responseString = "No response could be obtained";
1537 contentType = "text/plain";
1538 responsedata = new Hashtable();
1539 }
1531 } 1540 }
1532 1541
1533 if (responsedata.ContainsKey("error_status_text")) 1542 if (responsedata.ContainsKey("error_status_text"))
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index f6351ff..b6af1f2 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -491,10 +491,21 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
491 pathInfo = uri.Substring(pos3); 491 pathInfo = uri.Substring(pos3);
492 492
493 UrlData url = null; 493 UrlData url = null;
494 string urlkey;
494 if (!is_ssl) 495 if (!is_ssl)
495 url = m_UrlMap["http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp]; 496 urlkey = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp;
497 //m_UrlMap[];
496 else 498 else
497 url = m_UrlMap["https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp]; 499 urlkey = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp;
500
501 if (m_UrlMap.ContainsKey(urlkey))
502 {
503 url = m_UrlMap[urlkey];
504 }
505 else
506 {
507 m_log.Warn("[HttpRequestHandler]: http-in request failed; no such url: "+urlkey.ToString());
508 }
498 509
499 //for llGetHttpHeader support we need to store original URI here 510 //for llGetHttpHeader support we need to store original URI here
500 //to make x-path-info / x-query-string / x-script-url / x-remote-ip headers 511 //to make x-path-info / x-query-string / x-script-url / x-remote-ip headers