aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Scripting
diff options
context:
space:
mode:
authorubit2013-04-28 20:40:11 +0200
committerubit2013-04-28 20:40:11 +0200
commit61ea7ee5a94e5e3d33fc77c1c316318850309c42 (patch)
tree1e589fc3b448b580d1cc25b52215ef5ce2d7ae78 /OpenSim/Region/CoreModules/Scripting
parentMerge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork (diff)
parentController module for dynamic floaters (WIP) (diff)
downloadopensim-SC-61ea7ee5a94e5e3d33fc77c1c316318850309c42.zip
opensim-SC-61ea7ee5a94e5e3d33fc77c1c316318850309c42.tar.gz
opensim-SC-61ea7ee5a94e5e3d33fc77c1c316318850309c42.tar.bz2
opensim-SC-61ea7ee5a94e5e3d33fc77c1c316318850309c42.tar.xz
Merge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork
Conflicts: bin/Regions/Regions.ini.example
Diffstat (limited to 'OpenSim/Region/CoreModules/Scripting')
-rw-r--r--OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs79
-rw-r--r--OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs79
-rw-r--r--OpenSim/Region/CoreModules/Scripting/ScriptModuleComms/ScriptModuleCommsModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs21
-rw-r--r--OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs14
5 files changed, 147 insertions, 48 deletions
diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
index 0276267..2b13a8b 100644
--- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
+++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
@@ -189,6 +189,45 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
189 case (int)HttpRequestConstants.HTTP_VERIFY_CERT: 189 case (int)HttpRequestConstants.HTTP_VERIFY_CERT:
190 htc.HttpVerifyCert = (int.Parse(parms[i + 1]) != 0); 190 htc.HttpVerifyCert = (int.Parse(parms[i + 1]) != 0);
191 break; 191 break;
192
193 case (int)HttpRequestConstants.HTTP_VERBOSE_THROTTLE:
194
195 // TODO implement me
196 break;
197
198 case (int)HttpRequestConstants.HTTP_CUSTOM_HEADER:
199 //Parameters are in pairs and custom header takes
200 //arguments in pairs so adjust for header marker.
201 ++i;
202
203 //Maximum of 8 headers are allowed based on the
204 //Second Life documentation for llHTTPRequest.
205 for (int count = 1; count <= 8; ++count)
206 {
207 //Not enough parameters remaining for a header?
208 if (parms.Length - i < 2)
209 break;
210
211 //Have we reached the end of the list of headers?
212 //End is marked by a string with a single digit.
213 //We already know we have at least one parameter
214 //so it is safe to do this check at top of loop.
215 if (Char.IsDigit(parms[i][0]))
216 break;
217
218 if (htc.HttpCustomHeaders == null)
219 htc.HttpCustomHeaders = new List<string>();
220
221 htc.HttpCustomHeaders.Add(parms[i]);
222 htc.HttpCustomHeaders.Add(parms[i+1]);
223
224 i += 2;
225 }
226 break;
227
228 case (int)HttpRequestConstants.HTTP_PRAGMA_NO_CACHE:
229 htc.HttpPragmaNoCache = (int.Parse(parms[i + 1]) != 0);
230 break;
192 } 231 }
193 } 232 }
194 } 233 }
@@ -353,9 +392,12 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
353 // public const int HTTP_METHOD = 0; 392 // public const int HTTP_METHOD = 0;
354 // public const int HTTP_MIMETYPE = 1; 393 // public const int HTTP_MIMETYPE = 1;
355 // public const int HTTP_VERIFY_CERT = 3; 394 // public const int HTTP_VERIFY_CERT = 3;
395 // public const int HTTP_VERBOSE_THROTTLE = 4;
396 // public const int HTTP_CUSTOM_HEADER = 5;
397 // public const int HTTP_PRAGMA_NO_CACHE = 6;
356 private bool _finished; 398 private bool _finished;
357 public bool Finished 399 public bool Finished
358 { 400 {
359 get { return _finished; } 401 get { return _finished; }
360 } 402 }
361 // public int HttpBodyMaxLen = 2048; // not implemented 403 // public int HttpBodyMaxLen = 2048; // not implemented
@@ -367,9 +409,14 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
367 public bool HttpVerifyCert = true; 409 public bool HttpVerifyCert = true;
368 public IWorkItemResult WorkItem = null; 410 public IWorkItemResult WorkItem = null;
369 411
412 //public bool HttpVerboseThrottle = true; // not implemented
413 public List<string> HttpCustomHeaders = null;
414 public bool HttpPragmaNoCache = true;
415 private Thread httpThread;
416
370 // Request info 417 // Request info
371 private UUID _itemID; 418 private UUID _itemID;
372 public UUID ItemID 419 public UUID ItemID
373 { 420 {
374 get { return _itemID; } 421 get { return _itemID; }
375 set { _itemID = value; } 422 set { _itemID = value; }
@@ -385,7 +432,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
385 public string proxyexcepts; 432 public string proxyexcepts;
386 public string OutboundBody; 433 public string OutboundBody;
387 private UUID _reqID; 434 private UUID _reqID;
388 public UUID ReqID 435 public UUID ReqID
389 { 436 {
390 get { return _reqID; } 437 get { return _reqID; }
391 set { _reqID = value; } 438 set { _reqID = value; }
@@ -434,20 +481,34 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
434 Request.Method = HttpMethod; 481 Request.Method = HttpMethod;
435 Request.ContentType = HttpMIMEType; 482 Request.ContentType = HttpMIMEType;
436 483
437 if(!HttpVerifyCert) 484 if (!HttpVerifyCert)
438 { 485 {
439 // We could hijack Connection Group Name to identify 486 // We could hijack Connection Group Name to identify
440 // a desired security exception. But at the moment we'll use a dummy header instead. 487 // a desired security exception. But at the moment we'll use a dummy header instead.
441 Request.Headers.Add("NoVerifyCert", "true"); 488 Request.Headers.Add("NoVerifyCert", "true");
442 } 489 }
443 if (proxyurl != null && proxyurl.Length > 0) 490// else
491// {
492// Request.ConnectionGroupName="Verify";
493// }
494 if (!HttpPragmaNoCache)
495 {
496 Request.Headers.Add("Pragma", "no-cache");
497 }
498 if (HttpCustomHeaders != null)
444 { 499 {
445 if (proxyexcepts != null && proxyexcepts.Length > 0) 500 for (int i = 0; i < HttpCustomHeaders.Count; i += 2)
501 Request.Headers.Add(HttpCustomHeaders[i],
502 HttpCustomHeaders[i+1]);
503 }
504 if (proxyurl != null && proxyurl.Length > 0)
505 {
506 if (proxyexcepts != null && proxyexcepts.Length > 0)
446 { 507 {
447 string[] elist = proxyexcepts.Split(';'); 508 string[] elist = proxyexcepts.Split(';');
448 Request.Proxy = new WebProxy(proxyurl, true, elist); 509 Request.Proxy = new WebProxy(proxyurl, true, elist);
449 } 510 }
450 else 511 else
451 { 512 {
452 Request.Proxy = new WebProxy(proxyurl, true); 513 Request.Proxy = new WebProxy(proxyurl, true);
453 } 514 }
@@ -460,7 +521,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
460 Request.Headers[entry.Key] = entry.Value; 521 Request.Headers[entry.Key] = entry.Value;
461 522
462 // Encode outbound data 523 // Encode outbound data
463 if (OutboundBody.Length > 0) 524 if (OutboundBody.Length > 0)
464 { 525 {
465 byte[] data = Util.UTF8.GetBytes(OutboundBody); 526 byte[] data = Util.UTF8.GetBytes(OutboundBody);
466 527
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index 24e925e..f2922d6 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -84,20 +84,21 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
84 private Dictionary<string, UrlData> m_UrlMap = 84 private Dictionary<string, UrlData> m_UrlMap =
85 new Dictionary<string, UrlData>(); 85 new Dictionary<string, UrlData>();
86 86
87 /// <summary> 87 private uint m_HttpsPort = 0;
88 /// Maximum number of external urls that can be set up by this module.
89 /// </summary>
90 private int m_TotalUrls = 15000;
91
92 private uint https_port = 0;
93 private IHttpServer m_HttpServer = null; 88 private IHttpServer m_HttpServer = null;
94 private IHttpServer m_HttpsServer = null; 89 private IHttpServer m_HttpsServer = null;
95 90
96 private string m_ExternalHostNameForLSL = ""; 91 public string ExternalHostNameForLSL { get; private set; }
97 public string ExternalHostNameForLSL 92
98 { 93 /// <summary>
99 get { return m_ExternalHostNameForLSL; } 94 /// The default maximum number of urls
100 } 95 /// </summary>
96 public const int DefaultTotalUrls = 15000;
97
98 /// <summary>
99 /// Maximum number of external urls that can be set up by this module.
100 /// </summary>
101 public int TotalUrls { get; set; }
101 102
102 public Type ReplaceableInterface 103 public Type ReplaceableInterface
103 { 104 {
@@ -111,17 +112,27 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
111 112
112 public void Initialise(IConfigSource config) 113 public void Initialise(IConfigSource config)
113 { 114 {
114 m_ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", System.Environment.MachineName); 115 IConfig networkConfig = config.Configs["Network"];
115 bool ssl_enabled = config.Configs["Network"].GetBoolean("https_listener",false); 116
116 if (ssl_enabled) 117 if (networkConfig != null)
117 { 118 {
118 https_port = (uint) config.Configs["Network"].GetInt("https_port",0); 119 ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", null);
120
121 bool ssl_enabled = config.Configs["Network"].GetBoolean("https_listener", false);
122
123 if (ssl_enabled)
124 m_HttpsPort = (uint)config.Configs["Network"].GetInt("https_port", (int)m_HttpsPort);
119 } 125 }
120 126
127 if (ExternalHostNameForLSL == null)
128 ExternalHostNameForLSL = System.Environment.MachineName;
129
121 IConfig llFunctionsConfig = config.Configs["LL-Functions"]; 130 IConfig llFunctionsConfig = config.Configs["LL-Functions"];
122 131
123 if (llFunctionsConfig != null) 132 if (llFunctionsConfig != null)
124 m_TotalUrls = llFunctionsConfig.GetInt("max_external_urls_per_simulator", m_TotalUrls); 133 TotalUrls = llFunctionsConfig.GetInt("max_external_urls_per_simulator", DefaultTotalUrls);
134 else
135 TotalUrls = DefaultTotalUrls;
125 } 136 }
126 137
127 public void PostInitialise() 138 public void PostInitialise()
@@ -137,9 +148,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
137 m_HttpServer = MainServer.Instance; 148 m_HttpServer = MainServer.Instance;
138 // 149 //
139 // We can use the https if it is enabled 150 // We can use the https if it is enabled
140 if (https_port > 0) 151 if (m_HttpsPort > 0)
141 { 152 {
142 m_HttpsServer = MainServer.GetHttpServer(https_port); 153 m_HttpsServer = MainServer.GetHttpServer(m_HttpsPort);
143 } 154 }
144 } 155 }
145 156
@@ -172,12 +183,12 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
172 183
173 lock (m_UrlMap) 184 lock (m_UrlMap)
174 { 185 {
175 if (m_UrlMap.Count >= m_TotalUrls) 186 if (m_UrlMap.Count >= TotalUrls)
176 { 187 {
177 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); 188 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
178 return urlcode; 189 return urlcode;
179 } 190 }
180 string url = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString(); 191 string url = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString();
181 192
182 UrlData urlData = new UrlData(); 193 UrlData urlData = new UrlData();
183 urlData.hostID = host.UUID; 194 urlData.hostID = host.UUID;
@@ -218,12 +229,12 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
218 229
219 lock (m_UrlMap) 230 lock (m_UrlMap)
220 { 231 {
221 if (m_UrlMap.Count >= m_TotalUrls) 232 if (m_UrlMap.Count >= TotalUrls)
222 { 233 {
223 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); 234 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
224 return urlcode; 235 return urlcode;
225 } 236 }
226 string url = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString(); 237 string url = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString();
227 238
228 UrlData urlData = new UrlData(); 239 UrlData urlData = new UrlData();
229 urlData.hostID = host.UUID; 240 urlData.hostID = host.UUID;
@@ -304,6 +315,21 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
304 UrlData urlData = m_RequestMap[request]; 315 UrlData urlData = m_RequestMap[request];
305 if (!urlData.requests[request].responseSent) 316 if (!urlData.requests[request].responseSent)
306 { 317 {
318 string responseBody = body;
319 if (urlData.requests[request].responseType.Equals("text/plain"))
320 {
321 string value;
322 if (urlData.requests[request].headers.TryGetValue("user-agent", out value))
323 {
324 if (value != null && value.IndexOf("MSIE") >= 0)
325 {
326 // wrap the html escaped response if the target client is IE
327 // It ignores "text/plain" if the body is html
328 responseBody = "<html>" + System.Web.HttpUtility.HtmlEncode(body) + "</html>";
329 }
330 }
331 }
332
307 urlData.requests[request].responseCode = status; 333 urlData.requests[request].responseCode = status;
308 urlData.requests[request].responseBody = body; 334 urlData.requests[request].responseBody = body;
309 //urlData.requests[request].ev.Set(); 335 //urlData.requests[request].ev.Set();
@@ -339,7 +365,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
339 365
340 public int GetFreeUrls() 366 public int GetFreeUrls()
341 { 367 {
342 return m_TotalUrls - m_UrlMap.Count; 368 lock (m_UrlMap)
369 return TotalUrls - m_UrlMap.Count;
343 } 370 }
344 371
345 public void ScriptRemoved(UUID itemID) 372 public void ScriptRemoved(UUID itemID)
@@ -533,7 +560,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
533 { 560 {
534 Hashtable headers = (Hashtable)request["headers"]; 561 Hashtable headers = (Hashtable)request["headers"];
535 562
536// string uri_full = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/"; 563// string uri_full = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/";
537 564
538 int pos1 = uri.IndexOf("/");// /lslhttp 565 int pos1 = uri.IndexOf("/");// /lslhttp
539 int pos2 = uri.IndexOf("/", pos1 + 1);// /lslhttp/ 566 int pos2 = uri.IndexOf("/", pos1 + 1);// /lslhttp/
@@ -549,10 +576,10 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
549 UrlData url = null; 576 UrlData url = null;
550 string urlkey; 577 string urlkey;
551 if (!is_ssl) 578 if (!is_ssl)
552 urlkey = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp; 579 urlkey = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp;
553 //m_UrlMap[]; 580 //m_UrlMap[];
554 else 581 else
555 urlkey = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp; 582 urlkey = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp;
556 583
557 if (m_UrlMap.ContainsKey(urlkey)) 584 if (m_UrlMap.ContainsKey(urlkey))
558 { 585 {
diff --git a/OpenSim/Region/CoreModules/Scripting/ScriptModuleComms/ScriptModuleCommsModule.cs b/OpenSim/Region/CoreModules/Scripting/ScriptModuleComms/ScriptModuleCommsModule.cs
index f697c24..fccf053 100644
--- a/OpenSim/Region/CoreModules/Scripting/ScriptModuleComms/ScriptModuleCommsModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/ScriptModuleComms/ScriptModuleCommsModule.cs
@@ -41,7 +41,7 @@ using System.Linq.Expressions;
41namespace OpenSim.Region.CoreModules.Scripting.ScriptModuleComms 41namespace OpenSim.Region.CoreModules.Scripting.ScriptModuleComms
42{ 42{
43 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "ScriptModuleCommsModule")] 43 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "ScriptModuleCommsModule")]
44 class ScriptModuleCommsModule : INonSharedRegionModule, IScriptModuleComms 44 public class ScriptModuleCommsModule : INonSharedRegionModule, IScriptModuleComms
45 { 45 {
46 private static readonly ILog m_log = 46 private static readonly ILog m_log =
47 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 47 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
diff --git a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs
index f395441..2fc89fc 100644
--- a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs
@@ -516,6 +516,9 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
516 foreach (string line in GetLines(data, dataDelim)) 516 foreach (string line in GetLines(data, dataDelim))
517 { 517 {
518 string nextLine = line.Trim(); 518 string nextLine = line.Trim();
519
520// m_log.DebugFormat("[VECTOR RENDER MODULE]: Processing line '{0}'", nextLine);
521
519 //replace with switch, or even better, do some proper parsing 522 //replace with switch, or even better, do some proper parsing
520 if (nextLine.StartsWith("MoveTo")) 523 if (nextLine.StartsWith("MoveTo"))
521 { 524 {
@@ -829,6 +832,8 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
829 float y = Convert.ToSingle(yVal, CultureInfo.InvariantCulture); 832 float y = Convert.ToSingle(yVal, CultureInfo.InvariantCulture);
830 PointF point = new PointF(x, y); 833 PointF point = new PointF(x, y);
831 points[i / 2] = point; 834 points[i / 2] = point;
835
836// m_log.DebugFormat("[VECTOR RENDER MODULE]: Got point {0}", points[i / 2]);
832 } 837 }
833 } 838 }
834 } 839 }
@@ -838,13 +843,17 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender
838 try 843 try
839 { 844 {
840 WebRequest request = HttpWebRequest.Create(url); 845 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. 846
842//Ckrinke Stream str = null; 847 using (HttpWebResponse response = (HttpWebResponse)(request).GetResponse())
843 HttpWebResponse response = (HttpWebResponse)(request).GetResponse();
844 if (response.StatusCode == HttpStatusCode.OK)
845 { 848 {
846 Bitmap image = new Bitmap(response.GetResponseStream()); 849 if (response.StatusCode == HttpStatusCode.OK)
847 return image; 850 {
851 using (Stream s = response.GetResponseStream())
852 {
853 Bitmap image = new Bitmap(s);
854 return image;
855 }
856 }
848 } 857 }
849 } 858 }
850 catch { } 859 catch { }
diff --git a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
index 385f5ad..cbffca7 100644
--- a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
@@ -111,13 +111,15 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
111 m_rpcPending = new Dictionary<UUID, RPCRequestInfo>(); 111 m_rpcPending = new Dictionary<UUID, RPCRequestInfo>();
112 m_rpcPendingResponses = new Dictionary<UUID, RPCRequestInfo>(); 112 m_rpcPendingResponses = new Dictionary<UUID, RPCRequestInfo>();
113 m_pendingSRDResponses = new Dictionary<UUID, SendRemoteDataRequest>(); 113 m_pendingSRDResponses = new Dictionary<UUID, SendRemoteDataRequest>();
114 114 if (config.Configs["XMLRPC"] != null)
115 try
116 {
117 m_remoteDataPort = config.Configs["XMLRPC"].GetInt("XmlRpcPort", m_remoteDataPort);
118 }
119 catch (Exception)
120 { 115 {
116 try
117 {
118 m_remoteDataPort = config.Configs["XMLRPC"].GetInt("XmlRpcPort", m_remoteDataPort);
119 }
120 catch (Exception)
121 {
122 }
121 } 123 }
122 } 124 }
123 125