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

0.7.3-extended
Justin Clark-Casey (justincc) 2012-05-25 02:37:22 +01:00
parent 8d30a1f74b
commit 702826b850
2 changed files with 21 additions and 15 deletions

View File

@ -226,13 +226,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
return m_remoteConnector.RetrieveAgent(destination, id, out agent); return m_remoteConnector.RetrieveAgent(destination, id, out agent);
return false; return false;
} }
public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string version, out string reason) public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string version, out string reason)
{ {
reason = "Communications failure"; reason = "Communications failure";
version = "Unknown"; version = "Unknown";
if (destination == null) if (destination == null)
return false; return false;
@ -245,7 +245,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
return m_remoteConnector.QueryAccess(destination, id, position, out version, out reason); return m_remoteConnector.QueryAccess(destination, id, position, out version, out reason);
return false; return false;
} }
public bool ReleaseAgent(UUID origin, UUID id, string uri) public bool ReleaseAgent(UUID origin, UUID id, string uri)

View File

@ -328,25 +328,32 @@ namespace OpenSim.Services.Connectors.Simulation
if (data["version"] != null && data["version"].AsString() != string.Empty) if (data["version"] != null && data["version"].AsString() != string.Empty)
version = data["version"].AsString(); version = data["version"].AsString();
m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess to {0} returned {1} version {2} ({3})", uri, success, version, data["version"].AsString()); m_log.DebugFormat(
"[REMOTE SIMULATION CONNECTOR]: QueryAccess to {0} returned {1}, reason {2}, version {3} ({4})",
uri, success, reason, version, data["version"].AsString());
} }
if (!success) if (!success)
{ {
if (result.ContainsKey("Message")) // If we don't check this then OpenSimulator 0.7.3.1 and some period before will never see the
// actual failure message
if (!result.ContainsKey("_Result"))
{ {
string message = result["Message"].AsString(); if (result.ContainsKey("Message"))
if (message == "Service request failed: [MethodNotAllowed] MethodNotAllowed") // Old style region
{ {
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"); string message = result["Message"].AsString();
return true; if (message == "Service request failed: [MethodNotAllowed] MethodNotAllowed") // Old style region
{
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");
return true;
}
reason = result["Message"];
}
else
{
reason = "Communications failure";
} }
reason = result["Message"];
}
else
{
reason = "Communications failure";
} }
return false; return false;
@ -356,7 +363,7 @@ namespace OpenSim.Services.Connectors.Simulation
} }
catch (Exception e) catch (Exception e)
{ {
m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR] QueryAcess failed with exception; {0}",e.ToString()); m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR] QueryAcesss failed with exception; {0}",e.ToString());
} }
return false; return false;