aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/ConsoleClient/Requester.cs19
-rw-r--r--OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs32
-rw-r--r--OpenSim/Framework/Servers/HttpServer/RestSessionService.cs15
-rw-r--r--OpenSim/Framework/WebUtil.cs61
-rw-r--r--OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs38
-rw-r--r--OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs16
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs2
-rw-r--r--OpenSim/Region/Framework/Interfaces/IScriptModule.cs11
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs21
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs12
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs46
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs2
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt18
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs1
-rw-r--r--OpenSim/Services/Connectors/Hypergrid/HeloServicesConnector.cs14
-rw-r--r--OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs69
-rw-r--r--OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs34
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs47
-rw-r--r--OpenSim/Tests/Common/Mock/MockScriptEngine.cs57
-rw-r--r--OpenSim/Tests/ConfigurationLoaderTest.cs2
20 files changed, 301 insertions, 216 deletions
diff --git a/OpenSim/ConsoleClient/Requester.cs b/OpenSim/ConsoleClient/Requester.cs
index aabb02c..0a21328 100644
--- a/OpenSim/ConsoleClient/Requester.cs
+++ b/OpenSim/ConsoleClient/Requester.cs
@@ -44,7 +44,6 @@ namespace OpenSim.ConsoleClient
44 ReplyDelegate action) 44 ReplyDelegate action)
45 { 45 {
46 WebRequest request = WebRequest.Create(requestUrl); 46 WebRequest request = WebRequest.Create(requestUrl);
47 WebResponse response = null;
48 47
49 request.Method = "POST"; 48 request.Method = "POST";
50 49
@@ -64,16 +63,18 @@ namespace OpenSim.ConsoleClient
64 { 63 {
65 string reply = String.Empty; 64 string reply = String.Empty;
66 65
67 response = request.EndGetResponse(ar); 66 using (WebResponse response = request.EndGetResponse(ar))
68
69 try
70 { 67 {
71 StreamReader r = new StreamReader(response.GetResponseStream()); 68 try
72 reply = r.ReadToEnd(); 69 {
70 using (Stream s = response.GetResponseStream())
71 using (StreamReader r = new StreamReader(s))
72 reply = r.ReadToEnd();
73 73
74 } 74 }
75 catch (System.InvalidOperationException) 75 catch (System.InvalidOperationException)
76 { 76 {
77 }
77 } 78 }
78 79
79 action(requestUrl, data, reply); 80 action(requestUrl, data, reply);
diff --git a/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs b/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs
index 3dce578..6681c37 100644
--- a/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs
+++ b/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs
@@ -65,23 +65,27 @@ namespace OpenSim.Framework.Configuration.HTTP
65 byte[] buf = new byte[8192]; 65 byte[] buf = new byte[8192];
66 HttpWebRequest request = 66 HttpWebRequest request =
67 (HttpWebRequest) WebRequest.Create(remoteConfigSettings.baseConfigURL + configFileName); 67 (HttpWebRequest) WebRequest.Create(remoteConfigSettings.baseConfigURL + configFileName);
68 HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 68 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
69
70 Stream resStream = response.GetResponseStream();
71
72 string tempString = null;
73 int count = 0;
74
75 do
76 { 69 {
77 count = resStream.Read(buf, 0, buf.Length); 70 using (Stream resStream = response.GetResponseStream())
78 if (count != 0)
79 { 71 {
80 tempString = Util.UTF8.GetString(buf, 0, count); 72 string tempString = null;
81 sb.Append(tempString); 73 int count = 0;
74
75 do
76 {
77 count = resStream.Read(buf, 0, buf.Length);
78 if (count != 0)
79 {
80 tempString = Util.UTF8.GetString(buf, 0, count);
81 sb.Append(tempString);
82 }
83 }
84 while (count > 0);
85
86 LoadDataFromString(sb.ToString());
82 } 87 }
83 } while (count > 0); 88 }
84 LoadDataFromString(sb.ToString());
85 } 89 }
86 catch (WebException) 90 catch (WebException)
87 { 91 {
diff --git a/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs b/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs
index 19c03a8..edcd134 100644
--- a/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs
+++ b/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs
@@ -101,20 +101,11 @@ namespace OpenSim.Framework.Servers.HttpServer
101 using (WebResponse resp = request.GetResponse()) 101 using (WebResponse resp = request.GetResponse())
102 { 102 {
103 XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); 103 XmlSerializer deserializer = new XmlSerializer(typeof(TResponse));
104 Stream respStream = null; 104
105 try 105 using (Stream respStream = resp.GetResponseStream())
106 {
107 respStream = resp.GetResponseStream();
108 deserial = (TResponse)deserializer.Deserialize(respStream); 106 deserial = (TResponse)deserializer.Deserialize(respStream);
109 }
110 catch { }
111 finally
112 {
113 if (respStream != null)
114 respStream.Close();
115 resp.Close();
116 }
117 } 107 }
108
118 return deserial; 109 return deserial;
119 } 110 }
120 } 111 }
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs
index b85d93d..bf57fd4 100644
--- a/OpenSim/Framework/WebUtil.cs
+++ b/OpenSim/Framework/WebUtil.cs
@@ -228,8 +228,8 @@ namespace OpenSim.Framework
228 errorMessage = we.Message; 228 errorMessage = we.Message;
229 if (we.Status == WebExceptionStatus.ProtocolError) 229 if (we.Status == WebExceptionStatus.ProtocolError)
230 { 230 {
231 HttpWebResponse webResponse = (HttpWebResponse)we.Response; 231 using (HttpWebResponse webResponse = (HttpWebResponse)we.Response)
232 errorMessage = String.Format("[{0}] {1}",webResponse.StatusCode,webResponse.StatusDescription); 232 errorMessage = String.Format("[{0}] {1}", webResponse.StatusCode, webResponse.StatusDescription);
233 } 233 }
234 } 234 }
235 catch (Exception ex) 235 catch (Exception ex)
@@ -388,8 +388,8 @@ namespace OpenSim.Framework
388 errorMessage = we.Message; 388 errorMessage = we.Message;
389 if (we.Status == WebExceptionStatus.ProtocolError) 389 if (we.Status == WebExceptionStatus.ProtocolError)
390 { 390 {
391 HttpWebResponse webResponse = (HttpWebResponse)we.Response; 391 using (HttpWebResponse webResponse = (HttpWebResponse)we.Response)
392 errorMessage = String.Format("[{0}] {1}",webResponse.StatusCode,webResponse.StatusDescription); 392 errorMessage = String.Format("[{0}] {1}",webResponse.StatusCode,webResponse.StatusDescription);
393 } 393 }
394 } 394 }
395 catch (Exception ex) 395 catch (Exception ex)
@@ -837,15 +837,16 @@ namespace OpenSim.Framework
837 { 837 {
838 if (e.Response is HttpWebResponse) 838 if (e.Response is HttpWebResponse)
839 { 839 {
840 HttpWebResponse httpResponse = (HttpWebResponse)e.Response; 840 using (HttpWebResponse httpResponse = (HttpWebResponse)e.Response)
841 841 {
842 if (httpResponse.StatusCode != HttpStatusCode.NotFound) 842 if (httpResponse.StatusCode != HttpStatusCode.NotFound)
843 { 843 {
844 // We don't appear to be handling any other status codes, so log these feailures to that 844 // We don't appear to be handling any other status codes, so log these feailures to that
845 // people don't spend unnecessary hours hunting phantom bugs. 845 // people don't spend unnecessary hours hunting phantom bugs.
846 m_log.DebugFormat( 846 m_log.DebugFormat(
847 "[ASYNC REQUEST]: Request {0} {1} failed with unexpected status code {2}", 847 "[ASYNC REQUEST]: Request {0} {1} failed with unexpected status code {2}",
848 verb, requestUrl, httpResponse.StatusCode); 848 verb, requestUrl, httpResponse.StatusCode);
849 }
849 } 850 }
850 } 851 }
851 } 852 }
@@ -995,11 +996,9 @@ namespace OpenSim.Framework
995 Stream respStream = null; 996 Stream respStream = null;
996 try 997 try
997 { 998 {
998 respStream = resp.GetResponseStream(); 999 using (respStream = resp.GetResponseStream())
999 using (StreamReader reader = new StreamReader(respStream)) 1000 using (StreamReader reader = new StreamReader(respStream))
1000 { 1001 respstring = reader.ReadToEnd();
1001 respstring = reader.ReadToEnd();
1002 }
1003 } 1002 }
1004 catch (Exception e) 1003 catch (Exception e)
1005 { 1004 {
@@ -1142,10 +1141,11 @@ namespace OpenSim.Framework
1142 { 1141 {
1143 if (resp.ContentLength != 0) 1142 if (resp.ContentLength != 0)
1144 { 1143 {
1145 Stream respStream = resp.GetResponseStream(); 1144 using (Stream respStream = resp.GetResponseStream())
1146 XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); 1145 {
1147 deserial = (TResponse)deserializer.Deserialize(respStream); 1146 XmlSerializer deserializer = new XmlSerializer(typeof(TResponse));
1148 respStream.Close(); 1147 deserial = (TResponse)deserializer.Deserialize(respStream);
1148 }
1149 } 1149 }
1150 else 1150 else
1151 { 1151 {
@@ -1157,14 +1157,15 @@ namespace OpenSim.Framework
1157 } 1157 }
1158 catch (WebException e) 1158 catch (WebException e)
1159 { 1159 {
1160 HttpWebResponse hwr = (HttpWebResponse)e.Response; 1160 using (HttpWebResponse hwr = (HttpWebResponse)e.Response)
1161 1161 {
1162 if (hwr != null && hwr.StatusCode == HttpStatusCode.NotFound) 1162 if (hwr != null && hwr.StatusCode == HttpStatusCode.NotFound)
1163 return deserial; 1163 return deserial;
1164 else 1164 else
1165 m_log.ErrorFormat( 1165 m_log.ErrorFormat(
1166 "[SynchronousRestObjectRequester]: WebException for {0} {1} {2}: {3} {4}", 1166 "[SynchronousRestObjectRequester]: WebException for {0} {1} {2}: {3} {4}",
1167 verb, requestUrl, typeof(TResponse).ToString(), e.Message, e.StackTrace); 1167 verb, requestUrl, typeof(TResponse).ToString(), e.Message, e.StackTrace);
1168 }
1168 } 1169 }
1169 catch (System.InvalidOperationException) 1170 catch (System.InvalidOperationException)
1170 { 1171 {
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index 60b7190..b9c373b 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -88,15 +88,11 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
88 /// </summary> 88 /// </summary>
89 private int m_TotalUrls = 15000; 89 private int m_TotalUrls = 15000;
90 90
91 private uint https_port = 0; 91 private uint m_HttpsPort = 0;
92 private IHttpServer m_HttpServer = null; 92 private IHttpServer m_HttpServer = null;
93 private IHttpServer m_HttpsServer = null; 93 private IHttpServer m_HttpsServer = null;
94 94
95 private string m_ExternalHostNameForLSL = ""; 95 public string ExternalHostNameForLSL { get; private set; }
96 public string ExternalHostNameForLSL
97 {
98 get { return m_ExternalHostNameForLSL; }
99 }
100 96
101 public Type ReplaceableInterface 97 public Type ReplaceableInterface
102 { 98 {
@@ -110,13 +106,21 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
110 106
111 public void Initialise(IConfigSource config) 107 public void Initialise(IConfigSource config)
112 { 108 {
113 m_ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", System.Environment.MachineName); 109 IConfig networkConfig = config.Configs["Network"];
114 bool ssl_enabled = config.Configs["Network"].GetBoolean("https_listener",false); 110
115 if (ssl_enabled) 111 if (networkConfig != null)
116 { 112 {
117 https_port = (uint) config.Configs["Network"].GetInt("https_port",0); 113 ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", null);
114
115 bool ssl_enabled = config.Configs["Network"].GetBoolean("https_listener", false);
116
117 if (ssl_enabled)
118 m_HttpsPort = (uint)config.Configs["Network"].GetInt("https_port", (int)m_HttpsPort);
118 } 119 }
119 120
121 if (ExternalHostNameForLSL == null)
122 ExternalHostNameForLSL = System.Environment.MachineName;
123
120 IConfig llFunctionsConfig = config.Configs["LL-Functions"]; 124 IConfig llFunctionsConfig = config.Configs["LL-Functions"];
121 125
122 if (llFunctionsConfig != null) 126 if (llFunctionsConfig != null)
@@ -136,9 +140,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
136 m_HttpServer = MainServer.Instance; 140 m_HttpServer = MainServer.Instance;
137 // 141 //
138 // We can use the https if it is enabled 142 // We can use the https if it is enabled
139 if (https_port > 0) 143 if (m_HttpsPort > 0)
140 { 144 {
141 m_HttpsServer = MainServer.GetHttpServer(https_port); 145 m_HttpsServer = MainServer.GetHttpServer(m_HttpsPort);
142 } 146 }
143 } 147 }
144 148
@@ -176,7 +180,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
176 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); 180 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
177 return urlcode; 181 return urlcode;
178 } 182 }
179 string url = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString(); 183 string url = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString();
180 184
181 UrlData urlData = new UrlData(); 185 UrlData urlData = new UrlData();
182 urlData.hostID = host.UUID; 186 urlData.hostID = host.UUID;
@@ -221,7 +225,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
221 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); 225 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
222 return urlcode; 226 return urlcode;
223 } 227 }
224 string url = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString(); 228 string url = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString();
225 229
226 UrlData urlData = new UrlData(); 230 UrlData urlData = new UrlData();
227 urlData.hostID = host.UUID; 231 urlData.hostID = host.UUID;
@@ -542,7 +546,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
542 { 546 {
543 Hashtable headers = (Hashtable)request["headers"]; 547 Hashtable headers = (Hashtable)request["headers"];
544 548
545// string uri_full = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/"; 549// string uri_full = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/";
546 550
547 int pos1 = uri.IndexOf("/");// /lslhttp 551 int pos1 = uri.IndexOf("/");// /lslhttp
548 int pos2 = uri.IndexOf("/", pos1 + 1);// /lslhttp/ 552 int pos2 = uri.IndexOf("/", pos1 + 1);// /lslhttp/
@@ -558,10 +562,10 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
558 UrlData url = null; 562 UrlData url = null;
559 string urlkey; 563 string urlkey;
560 if (!is_ssl) 564 if (!is_ssl)
561 urlkey = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp; 565 urlkey = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp;
562 //m_UrlMap[]; 566 //m_UrlMap[];
563 else 567 else
564 urlkey = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp; 568 urlkey = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp;
565 569
566 if (m_UrlMap.ContainsKey(urlkey)) 570 if (m_UrlMap.ContainsKey(urlkey))
567 { 571 {
diff --git a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs
index f395441..14304a7 100644
--- a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs
@@ -838,13 +838,17 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
838 try 838 try
839 { 839 {
840 WebRequest request = HttpWebRequest.Create(url); 840 WebRequest request = HttpWebRequest.Create(url);
841//Ckrinke: Comment out for now as 'str' is unused. Bring it back into play later when it is used. 841
842//Ckrinke Stream str = null; 842 using (HttpWebResponse response = (HttpWebResponse)(request).GetResponse())
843 HttpWebResponse response = (HttpWebResponse)(request).GetResponse();
844 if (response.StatusCode == HttpStatusCode.OK)
845 { 843 {
846 Bitmap image = new Bitmap(response.GetResponseStream()); 844 if (response.StatusCode == HttpStatusCode.OK)
847 return image; 845 {
846 using (Stream s = response.GetResponseStream())
847 {
848 Bitmap image = new Bitmap(s);
849 return image;
850 }
851 }
848 } 852 }
849 } 853 }
850 catch { } 854 catch { }
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index c868ee4..bf18616 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -94,7 +94,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
94 if (Util.GetConfigVarFromSections<string>( 94 if (Util.GetConfigVarFromSections<string>(
95 config, "WorldMapModule", configSections, "WorldMap") == "WorldMap") 95 config, "WorldMapModule", configSections, "WorldMap") == "WorldMap")
96 m_Enabled = true; 96 m_Enabled = true;
97 97
98 blacklistTimeout 98 blacklistTimeout
99 = Util.GetConfigVarFromSections<int>(config, "BlacklistTimeout", configSections, 10 * 60) * 1000; 99 = Util.GetConfigVarFromSections<int>(config, "BlacklistTimeout", configSections, 10 * 60) * 1000;
100 } 100 }
diff --git a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
index 143af48..ced4e91 100644
--- a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
@@ -52,7 +52,18 @@ namespace OpenSim.Region.Framework.Interfaces
52 string GetXMLState(UUID itemID); 52 string GetXMLState(UUID itemID);
53 bool SetXMLState(UUID itemID, string xml); 53 bool SetXMLState(UUID itemID, string xml);
54 54
55 /// <summary>
56 /// Post a script event to a single script.
57 /// </summary>
58 /// <returns>true if the post suceeded, false if it did not</returns>
59 /// <param name='itemID'>The item ID of the script.</param>
60 /// <param name='name'>The name of the event.</param>
61 /// <param name='args'>
62 /// The arguments of the event. These are in the order in which they appear.
63 /// e.g. for http_request this will be an object array of key request_id, string method, string body
64 /// </param>
55 bool PostScriptEvent(UUID itemID, string name, Object[] args); 65 bool PostScriptEvent(UUID itemID, string name, Object[] args);
66
56 bool PostObjectEvent(UUID itemID, string name, Object[] args); 67 bool PostObjectEvent(UUID itemID, string name, Object[] args);
57 68
58 /// <summary> 69 /// <summary>
diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs
index f292a75..0cec959 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs
@@ -551,13 +551,20 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice
551 reqStream.Close(); 551 reqStream.Close();
552 } 552 }
553 553
554 HttpWebResponse fwdrsp = (HttpWebResponse)forwardreq.GetResponse(); 554 using (HttpWebResponse fwdrsp = (HttpWebResponse)forwardreq.GetResponse())
555 Encoding encoding = Util.UTF8; 555 {
556 StreamReader fwdresponsestream = new StreamReader(fwdrsp.GetResponseStream(), encoding); 556 Encoding encoding = Util.UTF8;
557 fwdresponsestr = fwdresponsestream.ReadToEnd(); 557
558 fwdresponsecontenttype = fwdrsp.ContentType; 558 using (Stream s = fwdrsp.GetResponseStream())
559 fwdresponsecode = (int)fwdrsp.StatusCode; 559 {
560 fwdresponsestream.Close(); 560 using (StreamReader fwdresponsestream = new StreamReader(s))
561 {
562 fwdresponsestr = fwdresponsestream.ReadToEnd();
563 fwdresponsecontenttype = fwdrsp.ContentType;
564 fwdresponsecode = (int)fwdrsp.StatusCode;
565 }
566 }
567 }
561 568
562 response["content_type"] = fwdresponsecontenttype; 569 response["content_type"] = fwdresponsecontenttype;
563 response["str_response_string"] = fwdresponsestr; 570 response["str_response_string"] = fwdresponsestr;
diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs
index 7da1de6..e756c70 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs
@@ -1123,18 +1123,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
1123 // Otherwise prepare the request 1123 // Otherwise prepare the request
1124// m_log.DebugFormat("[VivoxVoice] Sending request <{0}>", requrl); 1124// m_log.DebugFormat("[VivoxVoice] Sending request <{0}>", requrl);
1125 1125
1126 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(requrl); 1126 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(requrl);
1127 HttpWebResponse rsp = null;
1128 1127
1129 // We are sending just parameters, no content 1128 // We are sending just parameters, no content
1130 req.ContentLength = 0; 1129 req.ContentLength = 0;
1131 1130
1132 // Send request and retrieve the response 1131 // Send request and retrieve the response
1133 rsp = (HttpWebResponse)req.GetResponse(); 1132 using (HttpWebResponse rsp = (HttpWebResponse)req.GetResponse())
1134 1133 using (Stream s = rsp.GetResponseStream())
1135 XmlTextReader rdr = new XmlTextReader(rsp.GetResponseStream()); 1134 using (XmlTextReader rdr = new XmlTextReader(s))
1136 doc.Load(rdr); 1135 doc.Load(rdr);
1137 rdr.Close();
1138 } 1136 }
1139 catch (Exception e) 1137 catch (Exception e)
1140 { 1138 {
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
index 1101851..71b24ac 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
@@ -1146,28 +1146,38 @@ namespace Nwc.XmlRpc
1146 request.AllowWriteStreamBuffering = true; 1146 request.AllowWriteStreamBuffering = true;
1147 request.KeepAlive = !_disableKeepAlive; 1147 request.KeepAlive = !_disableKeepAlive;
1148 1148
1149 Stream stream = request.GetRequestStream(); 1149 using (Stream stream = request.GetRequestStream())
1150 XmlTextWriter xml = new XmlTextWriter(stream, Encoding.ASCII);
1151 _serializer.Serialize(xml, this);
1152 xml.Flush();
1153 xml.Close();
1154
1155 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
1156 StreamReader input = new StreamReader(response.GetResponseStream());
1157
1158 string inputXml = input.ReadToEnd();
1159 XmlRpcResponse resp;
1160 try
1161 { 1150 {
1162 resp = (XmlRpcResponse)_deserializer.Deserialize(inputXml); 1151 using (XmlTextWriter xml = new XmlTextWriter(stream, Encoding.ASCII))
1152 {
1153 _serializer.Serialize(xml, this);
1154 xml.Flush();
1155 }
1163 } 1156 }
1164 catch (Exception e) 1157
1158 XmlRpcResponse resp;
1159
1160 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
1165 { 1161 {
1166 RequestResponse = inputXml; 1162 using (Stream s = response.GetResponseStream())
1167 throw e; 1163 {
1164 using (StreamReader input = new StreamReader(s))
1165 {
1166 string inputXml = input.ReadToEnd();
1167
1168 try
1169 {
1170 resp = (XmlRpcResponse)_deserializer.Deserialize(inputXml);
1171 }
1172 catch (Exception e)
1173 {
1174 RequestResponse = inputXml;
1175 throw e;
1176 }
1177 }
1178 }
1168 } 1179 }
1169 input.Close(); 1180
1170 response.Close();
1171 return resp; 1181 return resp;
1172 } 1182 }
1173 } 1183 }
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 4dff927..8f660c4 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -470,7 +470,7 @@ public class BSPrim : BSPhysObject
470 // Note that this does not change _mass! 470 // Note that this does not change _mass!
471 public override void UpdatePhysicalMassProperties(float physMass, bool inWorld) 471 public override void UpdatePhysicalMassProperties(float physMass, bool inWorld)
472 { 472 {
473 if (PhysBody.HasPhysicalBody) 473 if (PhysBody.HasPhysicalBody && PhysShape.HasPhysicalShape)
474 { 474 {
475 if (IsStatic) 475 if (IsStatic)
476 { 476 {
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index 49718c4..4dc16f4 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -1,5 +1,12 @@
1CURRENT PRIORITIES 1CURRENT PRIORITIES
2================================================= 2=================================================
3Use the HACD convex hull routine in Bullet rather than the C# version.
4 Speed up hullifying large meshes.
5Enable vehicle border crossings (at least as poorly as ODE)
6 Terrain skirts
7 Avatar created in previous region and not new region when crossing border
8 Vehicle recreated in new sim at small Z value (offset from root value?) (DONE)
9Lock axis
3Deleting a linkset while standing on the root will leave the physical shape of the root behind. 10Deleting a linkset while standing on the root will leave the physical shape of the root behind.
4 Not sure if it is because standing on it. Done with large prim linksets. 11 Not sure if it is because standing on it. Done with large prim linksets.
5Vehicle angular vertical attraction 12Vehicle angular vertical attraction
@@ -7,16 +14,11 @@ vehicle angular banking
7Center-of-gravity 14Center-of-gravity
8Vehicle angular deflection 15Vehicle angular deflection
9 Preferred orientation angular correction fix 16 Preferred orientation angular correction fix
10Enable vehicle border crossings (at least as poorly as ODE)
11 Terrain skirts
12 Avatar created in previous region and not new region when crossing border
13 Vehicle recreated in new sim at small Z value (offset from root value?) (DONE)
14when should angular and linear motor targets be zeroed? when selected? 17when should angular and linear motor targets be zeroed? when selected?
15 Need a vehicle.clear()? Or an 'else' in prestep if not physical. 18 Need a vehicle.clear()? Or an 'else' in prestep if not physical.
16Teravus llMoveToTarget script debug 19Teravus llMoveToTarget script debug
17 Mixing of hover, buoyancy/gravity, moveToTarget, into one force 20 Mixing of hover, buoyancy/gravity, moveToTarget, into one force
18 Setting hover height to zero disables hover even if hover flags are on (from SL wiki) 21 Setting hover height to zero disables hover even if hover flags are on (from SL wiki)
19Nebadon vehicles turning funny in arena
20limitMotorUp calibration (more down?) 22limitMotorUp calibration (more down?)
21llRotLookAt 23llRotLookAt
22llLookAt 24llLookAt
@@ -66,6 +68,8 @@ Vehicle attributes are not restored when a vehicle is rezzed on region creation
66 68
67GENERAL TODO LIST: 69GENERAL TODO LIST:
68================================================= 70=================================================
71Resitution of a prim works on another prim but not on terrain.
72 The dropped prim doesn't bounce properly on the terrain.
69Add a sanity check for PIDTarget location. 73Add a sanity check for PIDTarget location.
70Level-of-detail for mesh creation. Prims with circular interiors require lod of 32. 74Level-of-detail for mesh creation. Prims with circular interiors require lod of 32.
71 Is much saved with lower LODs? At the moment, all set to 32. 75 Is much saved with lower LODs? At the moment, all set to 32.
@@ -163,7 +167,6 @@ Create tests for different interface components
163 Have test objects/scripts measure themselves and turn color if correct/bad 167 Have test objects/scripts measure themselves and turn color if correct/bad
164 Test functions in SL and calibrate correctness there 168 Test functions in SL and calibrate correctness there
165 Create auto rezzer and tracker to run through the tests 169 Create auto rezzer and tracker to run through the tests
166Use the HACD convex hull routine in Bullet rather than the C# version.
167Do we need to do convex hulls all the time? Can complex meshes be left meshes? 170Do we need to do convex hulls all the time? Can complex meshes be left meshes?
168 There is some problem with meshes and collisions 171 There is some problem with meshes and collisions
169 Hulls are not as detailed as meshes. Hulled vehicles insides are different shape. 172 Hulls are not as detailed as meshes. Hulled vehicles insides are different shape.
@@ -334,4 +337,5 @@ Child movement in linkset (don't rebuild linkset) (DONE 20130122))
334Avatar standing on a moving object should start to move with the object. (DONE 20130125) 337Avatar standing on a moving object should start to move with the object. (DONE 20130125)
335Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE. 338Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE.
336 Verify that angular motion specified around Z moves in the vehicle coordinates. 339 Verify that angular motion specified around Z moves in the vehicle coordinates.
337 DONE 20130120: BulletSim properly applies force in vehicle relative coordinates. \ No newline at end of file 340 DONE 20130120: BulletSim properly applies force in vehicle relative coordinates.
341Nebadon vehicles turning funny in arena (DONE) \ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 4c6950d..b67db20 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -10201,6 +10201,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
10201 return UUID.Zero.ToString(); 10201 return UUID.Zero.ToString();
10202 } 10202 }
10203 } 10203 }
10204
10204 public LSL_String llRequestURL() 10205 public LSL_String llRequestURL()
10205 { 10206 {
10206 m_host.AddScriptLPS(1); 10207 m_host.AddScriptLPS(1);
diff --git a/OpenSim/Services/Connectors/Hypergrid/HeloServicesConnector.cs b/OpenSim/Services/Connectors/Hypergrid/HeloServicesConnector.cs
index 5c50936..5004d99 100644
--- a/OpenSim/Services/Connectors/Hypergrid/HeloServicesConnector.cs
+++ b/OpenSim/Services/Connectors/Hypergrid/HeloServicesConnector.cs
@@ -73,7 +73,6 @@ namespace OpenSim.Services.Connectors
73 } 73 }
74 } 74 }
75 75
76
77 public virtual string Helo() 76 public virtual string Helo()
78 { 77 {
79 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI); 78 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI);
@@ -82,10 +81,12 @@ namespace OpenSim.Services.Connectors
82 81
83 try 82 try
84 { 83 {
85 WebResponse response = req.GetResponse(); 84 using (WebResponse response = req.GetResponse())
86 if (response.Headers.Get("X-Handlers-Provided") == null) // just in case this ever returns a null 85 {
87 return string.Empty; 86 if (response.Headers.Get("X-Handlers-Provided") == null) // just in case this ever returns a null
88 return response.Headers.Get("X-Handlers-Provided"); 87 return string.Empty;
88 return response.Headers.Get("X-Handlers-Provided");
89 }
89 } 90 }
90 catch (Exception e) 91 catch (Exception e)
91 { 92 {
@@ -95,6 +96,5 @@ namespace OpenSim.Services.Connectors
95 // fail 96 // fail
96 return string.Empty; 97 return string.Empty;
97 } 98 }
98
99 } 99 }
100} 100} \ No newline at end of file
diff --git a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs
index c542c29..d7e38f1 100644
--- a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs
@@ -169,41 +169,45 @@ namespace OpenSim.Services.Connectors.Hypergrid
169 // Let's wait for the response 169 // Let's wait for the response
170 //m_log.Info("[USER AGENT CONNECTOR]: Waiting for a reply after DoCreateChildAgentCall"); 170 //m_log.Info("[USER AGENT CONNECTOR]: Waiting for a reply after DoCreateChildAgentCall");
171 171
172 WebResponse webResponse = null;
173 StreamReader sr = null;
174 try 172 try
175 { 173 {
176 webResponse = AgentCreateRequest.GetResponse(); 174 using (WebResponse webResponse = AgentCreateRequest.GetResponse())
177 if (webResponse == null)
178 { 175 {
179 m_log.Info("[USER AGENT CONNECTOR]: Null reply on DoCreateChildAgentCall post"); 176 if (webResponse == null)
180 }
181 else
182 {
183
184 sr = new StreamReader(webResponse.GetResponseStream());
185 string response = sr.ReadToEnd().Trim();
186 m_log.InfoFormat("[USER AGENT CONNECTOR]: DoCreateChildAgentCall reply was {0} ", response);
187
188 if (!String.IsNullOrEmpty(response))
189 { 177 {
190 try 178 m_log.Info("[USER AGENT CONNECTOR]: Null reply on DoCreateChildAgentCall post");
191 { 179 }
192 // we assume we got an OSDMap back 180 else
193 OSDMap r = Util.GetOSDMap(response); 181 {
194 bool success = r["success"].AsBoolean(); 182 using (Stream s = webResponse.GetResponseStream())
195 reason = r["reason"].AsString();
196 return success;
197 }
198 catch (NullReferenceException e)
199 { 183 {
200 m_log.InfoFormat("[USER AGENT CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", e.Message); 184 using (StreamReader sr = new StreamReader(s))
201 185 {
202 // check for old style response 186 string response = sr.ReadToEnd().Trim();
203 if (response.ToLower().StartsWith("true")) 187 m_log.InfoFormat("[USER AGENT CONNECTOR]: DoCreateChildAgentCall reply was {0} ", response);
204 return true; 188
205 189 if (!String.IsNullOrEmpty(response))
206 return false; 190 {
191 try
192 {
193 // we assume we got an OSDMap back
194 OSDMap r = Util.GetOSDMap(response);
195 bool success = r["success"].AsBoolean();
196 reason = r["reason"].AsString();
197 return success;
198 }
199 catch (NullReferenceException e)
200 {
201 m_log.InfoFormat("[USER AGENT CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", e.Message);
202
203 // check for old style response
204 if (response.ToLower().StartsWith("true"))
205 return true;
206
207 return false;
208 }
209 }
210 }
207 } 211 }
208 } 212 }
209 } 213 }
@@ -214,11 +218,6 @@ namespace OpenSim.Services.Connectors.Hypergrid
214 reason = "Destination did not reply"; 218 reason = "Destination did not reply";
215 return false; 219 return false;
216 } 220 }
217 finally
218 {
219 if (sr != null)
220 sr.Close();
221 }
222 221
223 return true; 222 return true;
224 223
diff --git a/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs b/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs
index 7688e0f..b36fa23 100644
--- a/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs
+++ b/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs
@@ -168,22 +168,27 @@ namespace OpenSim.Services.Connectors
168 // Let's wait for the response 168 // Let's wait for the response
169 //m_log.Info("[REST COMMS]: Waiting for a reply after DoHelloNeighbourCall"); 169 //m_log.Info("[REST COMMS]: Waiting for a reply after DoHelloNeighbourCall");
170 170
171 StreamReader sr = null;
172 try 171 try
173 { 172 {
174 WebResponse webResponse = helloNeighbourRequest.GetResponse(); 173 using (WebResponse webResponse = helloNeighbourRequest.GetResponse())
175 if (webResponse == null)
176 { 174 {
177 m_log.DebugFormat( 175 if (webResponse == null)
178 "[REST COMMS]: Null reply on DoHelloNeighbourCall post from {0} to {1}", 176 {
179 thisRegion.RegionName, region.RegionName); 177 m_log.DebugFormat(
178 "[REST COMMS]: Null reply on DoHelloNeighbourCall post from {0} to {1}",
179 thisRegion.RegionName, region.RegionName);
180 }
181
182 using (Stream s = webResponse.GetResponseStream())
183 {
184 using (StreamReader sr = new StreamReader(s))
185 {
186 //reply = sr.ReadToEnd().Trim();
187 sr.ReadToEnd().Trim();
188 //m_log.InfoFormat("[REST COMMS]: DoHelloNeighbourCall reply was {0} ", reply);
189 }
190 }
180 } 191 }
181
182 sr = new StreamReader(webResponse.GetResponseStream());
183 //reply = sr.ReadToEnd().Trim();
184 sr.ReadToEnd().Trim();
185 //m_log.InfoFormat("[REST COMMS]: DoHelloNeighbourCall reply was {0} ", reply);
186
187 } 192 }
188 catch (Exception e) 193 catch (Exception e)
189 { 194 {
@@ -193,11 +198,6 @@ namespace OpenSim.Services.Connectors
193 198
194 return false; 199 return false;
195 } 200 }
196 finally
197 {
198 if (sr != null)
199 sr.Close();
200 }
201 201
202 return true; 202 return true;
203 } 203 }
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
index 63a32e7..74b980c 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
@@ -339,36 +339,38 @@ namespace OpenSim.Services.Connectors.SimianGrid
339 // Simian does not require the asset ID to be in the URL because it's in the post data. 339 // Simian does not require the asset ID to be in the URL because it's in the post data.
340 // By appending it to the URL also, we allow caching proxies (squid) to invalidate asset URLs 340 // By appending it to the URL also, we allow caching proxies (squid) to invalidate asset URLs
341 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(m_serverUrl + asset.FullID.ToString()); 341 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(m_serverUrl + asset.FullID.ToString());
342
343 HttpWebResponse response = MultipartForm.Post(request, postParameters);
344 using (Stream responseStream = response.GetResponseStream())
345 {
346 string responseStr = null;
347 342
348 try 343 using (HttpWebResponse response = MultipartForm.Post(request, postParameters))
344 {
345 using (Stream responseStream = response.GetResponseStream())
349 { 346 {
350 responseStr = responseStream.GetStreamString(); 347 string responseStr = null;
351 OSD responseOSD = OSDParser.Deserialize(responseStr); 348
352 if (responseOSD.Type == OSDType.Map) 349 try
353 { 350 {
354 OSDMap responseMap = (OSDMap)responseOSD; 351 responseStr = responseStream.GetStreamString();
355 if (responseMap["Success"].AsBoolean()) 352 OSD responseOSD = OSDParser.Deserialize(responseStr);
356 return asset.ID; 353 if (responseOSD.Type == OSDType.Map)
354 {
355 OSDMap responseMap = (OSDMap)responseOSD;
356 if (responseMap["Success"].AsBoolean())
357 return asset.ID;
358 else
359 errorMessage = "Upload failed: " + responseMap["Message"].AsString();
360 }
357 else 361 else
358 errorMessage = "Upload failed: " + responseMap["Message"].AsString(); 362 {
363 errorMessage = "Response format was invalid:\n" + responseStr;
364 }
359 } 365 }
360 else 366 catch (Exception ex)
361 { 367 {
362 errorMessage = "Response format was invalid:\n" + responseStr; 368 if (!String.IsNullOrEmpty(responseStr))
369 errorMessage = "Failed to parse the response:\n" + responseStr;
370 else
371 errorMessage = "Failed to retrieve the response: " + ex.Message;
363 } 372 }
364 } 373 }
365 catch (Exception ex)
366 {
367 if (!String.IsNullOrEmpty(responseStr))
368 errorMessage = "Failed to parse the response:\n" + responseStr;
369 else
370 errorMessage = "Failed to retrieve the response: " + ex.Message;
371 }
372 } 374 }
373 } 375 }
374 catch (WebException ex) 376 catch (WebException ex)
@@ -378,6 +380,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
378 380
379 m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: Failed to store asset \"{0}\" ({1}, {2}): {3}", 381 m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: Failed to store asset \"{0}\" ({1}, {2}): {3}",
380 asset.Name, asset.ID, asset.Metadata.ContentType, errorMessage); 382 asset.Name, asset.ID, asset.Metadata.ContentType, errorMessage);
383
381 return null; 384 return null;
382 } 385 }
383 386
diff --git a/OpenSim/Tests/Common/Mock/MockScriptEngine.cs b/OpenSim/Tests/Common/Mock/MockScriptEngine.cs
index 78bab5b..6a53fe7 100644
--- a/OpenSim/Tests/Common/Mock/MockScriptEngine.cs
+++ b/OpenSim/Tests/Common/Mock/MockScriptEngine.cs
@@ -40,10 +40,33 @@ namespace OpenSim.Tests.Common
40{ 40{
41 public class MockScriptEngine : INonSharedRegionModule, IScriptModule, IScriptEngine 41 public class MockScriptEngine : INonSharedRegionModule, IScriptModule, IScriptEngine
42 { 42 {
43 public IConfigSource ConfigSource { get; private set; }
44
45 public IConfig Config { get; private set; }
46
43 private Scene m_scene; 47 private Scene m_scene;
44 48
49 /// <summary>
50 /// Expose posted events to tests.
51 /// </summary>
52 public Dictionary<UUID, List<EventParams>> PostedEvents { get; private set; }
53
54 /// <summary>
55 /// A very primitive way of hooking text cose to a posed event.
56 /// </summary>
57 /// <remarks>
58 /// May be replaced with something that uses more original code in the future.
59 /// </remarks>
60 public event Action<UUID, EventParams> PostEventHook;
61
45 public void Initialise(IConfigSource source) 62 public void Initialise(IConfigSource source)
46 { 63 {
64 ConfigSource = source;
65
66 // Can set later on if required
67 Config = new IniConfig("MockScriptEngine", ConfigSource);
68
69 PostedEvents = new Dictionary<UUID, List<EventParams>>();
47 } 70 }
48 71
49 public void Close() 72 public void Close()
@@ -85,7 +108,28 @@ namespace OpenSim.Tests.Common
85 108
86 public bool PostScriptEvent(UUID itemID, string name, object[] args) 109 public bool PostScriptEvent(UUID itemID, string name, object[] args)
87 { 110 {
88 return false; 111// Console.WriteLine("Posting event {0} for {1}", name, itemID);
112
113 EventParams evParams = new EventParams(name, args, null);
114
115 List<EventParams> eventsForItem;
116
117 if (!PostedEvents.ContainsKey(itemID))
118 {
119 eventsForItem = new List<EventParams>();
120 PostedEvents.Add(itemID, eventsForItem);
121 }
122 else
123 {
124 eventsForItem = PostedEvents[itemID];
125 }
126
127 eventsForItem.Add(evParams);
128
129 if (PostEventHook != null)
130 PostEventHook(itemID, evParams);
131
132 return true;
89 } 133 }
90 134
91 public bool PostObjectEvent(UUID itemID, string name, object[] args) 135 public bool PostObjectEvent(UUID itemID, string name, object[] args)
@@ -195,11 +239,7 @@ namespace OpenSim.Tests.Common
195 239
196 public Scene World { get { return m_scene; } } 240 public Scene World { get { return m_scene; } }
197 241
198 public IScriptModule ScriptModule { get { throw new System.NotImplementedException(); } } 242 public IScriptModule ScriptModule { get { return this; } }
199
200 public IConfig Config { get { throw new System.NotImplementedException (); } }
201
202 public IConfigSource ConfigSource { get { throw new System.NotImplementedException (); } }
203 243
204 public string ScriptEnginePath { get { throw new System.NotImplementedException (); }} 244 public string ScriptEnginePath { get { throw new System.NotImplementedException (); }}
205 245
@@ -210,5 +250,10 @@ namespace OpenSim.Tests.Common
210 public string[] ScriptReferencedAssemblies { get { throw new System.NotImplementedException (); } } 250 public string[] ScriptReferencedAssemblies { get { throw new System.NotImplementedException (); } }
211 251
212 public ParameterInfo[] ScriptBaseClassParameters { get { throw new System.NotImplementedException (); } } 252 public ParameterInfo[] ScriptBaseClassParameters { get { throw new System.NotImplementedException (); } }
253
254 public void ClearPostedEvents()
255 {
256 PostedEvents.Clear();
257 }
213 } 258 }
214} \ No newline at end of file 259} \ No newline at end of file
diff --git a/OpenSim/Tests/ConfigurationLoaderTest.cs b/OpenSim/Tests/ConfigurationLoaderTest.cs
index e5186ae..9d63324 100644
--- a/OpenSim/Tests/ConfigurationLoaderTest.cs
+++ b/OpenSim/Tests/ConfigurationLoaderTest.cs
@@ -47,6 +47,8 @@ namespace OpenSim.Tests
47 [SetUp] 47 [SetUp]
48 public void SetUp() 48 public void SetUp()
49 { 49 {
50 base.SetUp();
51
50 m_basePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); 52 m_basePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
51 string path = Path.Combine(m_basePath, m_testSubdirectory); 53 string path = Path.Combine(m_basePath, m_testSubdirectory);
52 Directory.CreateDirectory(path); 54 Directory.CreateDirectory(path);