aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Scripting
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Scripting')
-rw-r--r--OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs16
-rw-r--r--OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs34
2 files changed, 38 insertions, 12 deletions
diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
index d78931a..51742ff 100644
--- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
+++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
@@ -341,6 +341,10 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
341 try 341 try
342 { 342 {
343 Request = (HttpWebRequest) WebRequest.Create(Url); 343 Request = (HttpWebRequest) WebRequest.Create(Url);
344
345 //This works around some buggy HTTP Servers like Lighttpd
346 Request.ServicePoint.Expect100Continue = false;
347
344 Request.Method = HttpMethod; 348 Request.Method = HttpMethod;
345 Request.ContentType = HttpMIMEType; 349 Request.ContentType = HttpMIMEType;
346 350
@@ -404,7 +408,17 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
404 { 408 {
405 HttpWebResponse webRsp = (HttpWebResponse)((WebException)e).Response; 409 HttpWebResponse webRsp = (HttpWebResponse)((WebException)e).Response;
406 Status = (int)webRsp.StatusCode; 410 Status = (int)webRsp.StatusCode;
407 ResponseBody = webRsp.StatusDescription; 411 try
412 {
413 using (Stream responseStream = webRsp.GetResponseStream())
414 {
415 ResponseBody = responseStream.GetStreamString();
416 }
417 }
418 catch
419 {
420 ResponseBody = webRsp.StatusDescription;
421 }
408 } 422 }
409 else 423 else
410 { 424 {
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index 9b565ed..bdbd0c2 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -60,6 +60,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
60 //public ManualResetEvent ev; 60 //public ManualResetEvent ev;
61 public bool requestDone; 61 public bool requestDone;
62 public int startTime; 62 public int startTime;
63 public bool responseSent;
63 public string uri; 64 public string uri;
64 } 65 }
65 66
@@ -76,7 +77,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
76 new Dictionary<string, UrlData>(); 77 new Dictionary<string, UrlData>();
77 78
78 79
79 private int m_TotalUrls = 100; 80 private int m_TotalUrls = 5000;
80 81
81 private IHttpServer m_HttpServer = null; 82 private IHttpServer m_HttpServer = null;
82 83
@@ -142,7 +143,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
142 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); 143 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
143 return urlcode; 144 return urlcode;
144 } 145 }
145 string url = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString() + "/"; 146 string url = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString();
146 147
147 UrlData urlData = new UrlData(); 148 UrlData urlData = new UrlData();
148 urlData.hostID = host.UUID; 149 urlData.hostID = host.UUID;
@@ -152,10 +153,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
152 urlData.urlcode = urlcode; 153 urlData.urlcode = urlcode;
153 urlData.requests = new Dictionary<UUID, RequestData>(); 154 urlData.requests = new Dictionary<UUID, RequestData>();
154 155
155
156 m_UrlMap[url] = urlData; 156 m_UrlMap[url] = urlData;
157 157
158 string uri = "/lslhttp/" + urlcode.ToString() + "/"; 158 string uri = "/lslhttp/" + urlcode.ToString();
159 159
160 m_HttpServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll, 160 m_HttpServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll,
161 new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents, 161 new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents,
@@ -200,10 +200,14 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
200 if (m_RequestMap.ContainsKey(request)) 200 if (m_RequestMap.ContainsKey(request))
201 { 201 {
202 UrlData urlData = m_RequestMap[request]; 202 UrlData urlData = m_RequestMap[request];
203 urlData.requests[request].responseCode = status; 203 if (!urlData.requests[request].responseSent)
204 urlData.requests[request].responseBody = body; 204 {
205 //urlData.requests[request].ev.Set(); 205 urlData.requests[request].responseCode = status;
206 urlData.requests[request].requestDone =true; 206 urlData.requests[request].responseBody = body;
207 //urlData.requests[request].ev.Set();
208 urlData.requests[request].requestDone = true;
209 urlData.requests[request].responseSent = true;
210 }
207 } 211 }
208 else 212 else
209 { 213 {
@@ -386,6 +390,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
386 390
387 return response; 391 return response;
388 } 392 }
393
389 public void HttpRequestHandler(UUID requestID, Hashtable request) 394 public void HttpRequestHandler(UUID requestID, Hashtable request)
390 { 395 {
391 lock (request) 396 lock (request)
@@ -400,8 +405,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
400 405
401 int pos1 = uri.IndexOf("/");// /lslhttp 406 int pos1 = uri.IndexOf("/");// /lslhttp
402 int pos2 = uri.IndexOf("/", pos1 + 1);// /lslhttp/ 407 int pos2 = uri.IndexOf("/", pos1 + 1);// /lslhttp/
403 int pos3 = uri.IndexOf("/", pos2 + 1);// /lslhttp/<UUID>/ 408 int pos3 = pos2 + 37; // /lslhttp/urlcode
404 string uri_tmp = uri.Substring(0, pos3 + 1); 409 string uri_tmp = uri.Substring(0, pos3);
405 //HTTP server code doesn't provide us with QueryStrings 410 //HTTP server code doesn't provide us with QueryStrings
406 string pathInfo; 411 string pathInfo;
407 string queryString; 412 string queryString;
@@ -439,7 +444,14 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
439 if (request.ContainsKey(key)) 444 if (request.ContainsKey(key))
440 { 445 {
441 string val = (String)request[key]; 446 string val = (String)request[key];
442 queryString = queryString + key + "=" + val + "&"; 447 if (key != "")
448 {
449 queryString = queryString + key + "=" + val + "&";
450 }
451 else
452 {
453 queryString = queryString + val + "&";
454 }
443 } 455 }
444 } 456 }
445 if (queryString.Length > 1) 457 if (queryString.Length > 1)