aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications
diff options
context:
space:
mode:
authorBrian McBee2008-01-20 21:11:55 +0000
committerBrian McBee2008-01-20 21:11:55 +0000
commit59d7165f40d01b0df5d28a2654da844a9abcd2db (patch)
tree558cb8af489512b18280559e8ab9fc9bcdfd4863 /OpenSim/Region/Communications
parentCheck if remote simulator is up before attempting teleport. Teleport to a rem... (diff)
downloadopensim-SC-59d7165f40d01b0df5d28a2654da844a9abcd2db.zip
opensim-SC-59d7165f40d01b0df5d28a2654da844a9abcd2db.tar.gz
opensim-SC-59d7165f40d01b0df5d28a2654da844a9abcd2db.tar.bz2
opensim-SC-59d7165f40d01b0df5d28a2654da844a9abcd2db.tar.xz
Graceful failure of teleport to unavailable regions might actually work now.
I blame all bugs on the age of my brain cells.
Diffstat (limited to 'OpenSim/Region/Communications')
-rw-r--r--OpenSim/Region/Communications/Local/LocalBackEndServices.cs12
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs14
2 files changed, 18 insertions, 8 deletions
diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
index 8cba6fd..5b16e5a 100644
--- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
+++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
@@ -47,6 +47,18 @@ namespace OpenSim.Region.Communications.Local
47 47
48 public string _gdebugRegionName = System.String.Empty; 48 public string _gdebugRegionName = System.String.Empty;
49 49
50 bool m_bAvailable=true;
51
52 public void CheckRegion(string address, uint port)
53 {
54 m_bAvailable = true;
55 }
56
57 public bool Available
58 {
59 get { return m_bAvailable; }
60 }
61
50 public string gdebugRegionName 62 public string gdebugRegionName
51 { 63 {
52 get { return _gdebugRegionName; } 64 get { return _gdebugRegionName; }
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 78dca09..7cd77db 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -594,9 +594,7 @@ namespace OpenSim.Region.Communications.OGS1
594 //don't want to be creating a new link to the remote instance every time like we are here 594 //don't want to be creating a new link to the remote instance every time like we are here
595 bool retValue = false; 595 bool retValue = false;
596 596
597 checkRegion(regInfo.RemotingAddress, regInfo.RemotingPort); 597
598 if (Available)
599 {
600 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( 598 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
601 typeof(OGS1InterRegionRemoting), 599 typeof(OGS1InterRegionRemoting),
602 "tcp://" + regInfo.RemotingAddress + 600 "tcp://" + regInfo.RemotingAddress +
@@ -618,7 +616,7 @@ namespace OpenSim.Region.Communications.OGS1
618 retValue.ToString()); 616 retValue.ToString());
619 617
620 return retValue; 618 return retValue;
621 } 619
622 } 620 }
623 621
624 return false; 622 return false;
@@ -1091,18 +1089,18 @@ namespace OpenSim.Region.Communications.OGS1
1091 1089
1092 // helper to see if remote region is up 1090 // helper to see if remote region is up
1093 bool m_bAvailable = false; 1091 bool m_bAvailable = false;
1094 int timeOut = 15000; //15 seconds 1092 int timeOut = 10; //10 seconds
1095 1093
1096 public void checkRegion(string address, uint port) 1094 public void CheckRegion(string address, uint port)
1097 { 1095 {
1096 m_bAvailable = false;
1098 IPAddress ia = null; 1097 IPAddress ia = null;
1099 IPAddress.TryParse(address, out ia); 1098 IPAddress.TryParse(address, out ia);
1100 IPEndPoint m_EndPoint = new IPEndPoint(ia, (int)port); 1099 IPEndPoint m_EndPoint = new IPEndPoint(ia, (int)port);
1101 AsyncCallback ConnectedMethodCallback = new AsyncCallback(ConnectedMethod); 1100 AsyncCallback ConnectedMethodCallback = new AsyncCallback(ConnectedMethod);
1102 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 1101 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
1103 IAsyncResult ar = socket.BeginConnect(m_EndPoint, ConnectedMethodCallback, socket); 1102 IAsyncResult ar = socket.BeginConnect(m_EndPoint, ConnectedMethodCallback, socket);
1104 ar.AsyncWaitHandle.WaitOne(timeOut, false); 1103 ar.AsyncWaitHandle.WaitOne(timeOut*1000, false);
1105 socket.Close();
1106 } 1104 }
1107 1105
1108 public bool Available 1106 public bool Available