aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-05-25 02:37:22 +0100
committerJustin Clark-Casey (justincc)2012-05-25 02:37:22 +0100
commit96cde407ab0d40856fb10b3b9f304433ffe734a2 (patch)
tree776c55bf6ad21506626fb2c636abfb2cf2146ed0 /OpenSim
parentStop it being possible for an agent to teleport back to its source region bef... (diff)
downloadopensim-SC-96cde407ab0d40856fb10b3b9f304433ffe734a2.zip
opensim-SC-96cde407ab0d40856fb10b3b9f304433ffe734a2.tar.gz
opensim-SC-96cde407ab0d40856fb10b3b9f304433ffe734a2.tar.bz2
opensim-SC-96cde407ab0d40856fb10b3b9f304433ffe734a2.tar.xz
Fix bug where a failed QueryAccess to a remove region would always have the reason "Communications failure" no matter what the destination region actually returned
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs3
-rw-r--r--OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs33
2 files changed, 21 insertions, 15 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
index 3d28518..f980f68 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
@@ -226,13 +226,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
226 return m_remoteConnector.RetrieveAgent(destination, id, out agent); 226 return m_remoteConnector.RetrieveAgent(destination, id, out agent);
227 227
228 return false; 228 return false;
229
230 } 229 }
231 230
232 public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string version, out string reason) 231 public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string version, out string reason)
233 { 232 {
234 reason = "Communications failure"; 233 reason = "Communications failure";
235 version = "Unknown"; 234 version = "Unknown";
235
236 if (destination == null) 236 if (destination == null)
237 return false; 237 return false;
238 238
@@ -245,7 +245,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
245 return m_remoteConnector.QueryAccess(destination, id, position, out version, out reason); 245 return m_remoteConnector.QueryAccess(destination, id, position, out version, out reason);
246 246
247 return false; 247 return false;
248
249 } 248 }
250 249
251 public bool ReleaseAgent(UUID origin, UUID id, string uri) 250 public bool ReleaseAgent(UUID origin, UUID id, string uri)
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
index 032beb5..95c4f87 100644
--- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
@@ -328,25 +328,32 @@ namespace OpenSim.Services.Connectors.Simulation
328 if (data["version"] != null && data["version"].AsString() != string.Empty) 328 if (data["version"] != null && data["version"].AsString() != string.Empty)
329 version = data["version"].AsString(); 329 version = data["version"].AsString();
330 330
331 m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess to {0} returned {1} version {2} ({3})", uri, success, version, data["version"].AsString()); 331 m_log.DebugFormat(
332 "[REMOTE SIMULATION CONNECTOR]: QueryAccess to {0} returned {1}, reason {2}, version {3} ({4})",
333 uri, success, reason, version, data["version"].AsString());
332 } 334 }
333 335
334 if (!success) 336 if (!success)
335 { 337 {
336 if (result.ContainsKey("Message")) 338 // If we don't check this then OpenSimulator 0.7.3.1 and some period before will never see the
339 // actual failure message
340 if (!result.ContainsKey("_Result"))
337 { 341 {
338 string message = result["Message"].AsString(); 342 if (result.ContainsKey("Message"))
339 if (message == "Service request failed: [MethodNotAllowed] MethodNotAllowed") // Old style region
340 { 343 {
341 m_log.Info("[REMOTE SIMULATION CONNECTOR]: The above web util error was caused by a TP to a sim that doesn't support QUERYACCESS and can be ignored"); 344 string message = result["Message"].AsString();
342 return true; 345 if (message == "Service request failed: [MethodNotAllowed] MethodNotAllowed") // Old style region
346 {
347 m_log.Info("[REMOTE SIMULATION CONNECTOR]: The above web util error was caused by a TP to a sim that doesn't support QUERYACCESS and can be ignored");
348 return true;
349 }
350
351 reason = result["Message"];
352 }
353 else
354 {
355 reason = "Communications failure";
343 } 356 }
344
345 reason = result["Message"];
346 }
347 else
348 {
349 reason = "Communications failure";
350 } 357 }
351 358
352 return false; 359 return false;
@@ -356,7 +363,7 @@ namespace OpenSim.Services.Connectors.Simulation
356 } 363 }
357 catch (Exception e) 364 catch (Exception e)
358 { 365 {
359 m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR] QueryAcess failed with exception; {0}",e.ToString()); 366 m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR] QueryAcesss failed with exception; {0}",e.ToString());
360 } 367 }
361 368
362 return false; 369 return false;