aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services')
-rw-r--r--OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs25
-rw-r--r--OpenSim/Services/Interfaces/ISimulationService.cs2
2 files changed, 22 insertions, 5 deletions
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
index 143c296..c5313fc 100644
--- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
@@ -31,6 +31,7 @@ using System.IO;
31using System.Net; 31using System.Net;
32using System.Reflection; 32using System.Reflection;
33using System.Text; 33using System.Text;
34using System.Collections;
34 35
35using OpenSim.Framework; 36using OpenSim.Framework;
36using OpenSim.Services.Interfaces; 37using OpenSim.Services.Interfaces;
@@ -206,9 +207,9 @@ namespace OpenSim.Services.Connectors.Simulation
206 207
207 /// <summary> 208 /// <summary>
208 /// </summary> 209 /// </summary>
209 public bool QueryAccess(GridRegion destination, UUID id) 210 public bool QueryAccess(GridRegion destination, UUID id, Vector3 position)
210 { 211 {
211 // m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess start"); 212 // m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess start, position={0}", position);
212 213
213 IPEndPoint ext = destination.ExternalEndPoint; 214 IPEndPoint ext = destination.ExternalEndPoint;
214 if (ext == null) return false; 215 if (ext == null) return false;
@@ -216,10 +217,26 @@ namespace OpenSim.Services.Connectors.Simulation
216 // Eventually, we want to use a caps url instead of the agentID 217 // Eventually, we want to use a caps url instead of the agentID
217 string uri = destination.ServerURI + AgentPath() + id + "/" + destination.RegionID.ToString() + "/"; 218 string uri = destination.ServerURI + AgentPath() + id + "/" + destination.RegionID.ToString() + "/";
218 219
220 OSDMap request = new OSDMap();
221 request.Add("position", OSD.FromString(position.ToString()));
222
219 try 223 try
220 { 224 {
221 OSDMap result = WebUtil.ServiceOSDRequest(uri,null,"QUERYACCESS",10000); 225 OSDMap result = WebUtil.ServiceOSDRequest(uri, request, "QUERYACCESS", 10000);
222 return result["Success"].AsBoolean(); 226 bool success = result["Success"].AsBoolean();
227 if (!success)
228 {
229 if (result.ContainsKey("Message"))
230 {
231 string message = result["Message"].AsString();
232 if (message == "Service request failed: [MethodNotAllowed] MethodNotAllowed") // Old style region
233 {
234 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");
235 return true;
236 }
237 }
238 }
239 return success;
223 } 240 }
224 catch (Exception e) 241 catch (Exception e)
225 { 242 {
diff --git a/OpenSim/Services/Interfaces/ISimulationService.cs b/OpenSim/Services/Interfaces/ISimulationService.cs
index 12e8982..48a2185 100644
--- a/OpenSim/Services/Interfaces/ISimulationService.cs
+++ b/OpenSim/Services/Interfaces/ISimulationService.cs
@@ -60,7 +60,7 @@ namespace OpenSim.Services.Interfaces
60 60
61 bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent); 61 bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent);
62 62
63 bool QueryAccess(GridRegion destination, UUID id); 63 bool QueryAccess(GridRegion destination, UUID id, Vector3 position);
64 64
65 /// <summary> 65 /// <summary>
66 /// Message from receiving region to departing region, telling it got contacted by the client. 66 /// Message from receiving region to departing region, telling it got contacted by the client.