diff options
author | Brian McBee | 2008-01-20 21:11:55 +0000 |
---|---|---|
committer | Brian McBee | 2008-01-20 21:11:55 +0000 |
commit | 59d7165f40d01b0df5d28a2654da844a9abcd2db (patch) | |
tree | 558cb8af489512b18280559e8ab9fc9bcdfd4863 /OpenSim/Region/Communications | |
parent | Check if remote simulator is up before attempting teleport. Teleport to a rem... (diff) | |
download | opensim-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.cs | 12 | ||||
-rw-r--r-- | OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | 14 |
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 |