diff options
author | Oren Hurvitz | 2014-05-18 19:45:27 +0300 |
---|---|---|
committer | Oren Hurvitz | 2014-05-19 11:19:11 +0100 |
commit | 47b84875fd2b9f01140288a2695c33f5ef4466c0 (patch) | |
tree | dd22882762b4e4ec411de5c37d98fd1a394835b2 /OpenSim/Server | |
parent | Log the user when an inventory operation is blocked because the item/folder i... (diff) | |
download | opensim-SC_OLD-47b84875fd2b9f01140288a2695c33f5ef4466c0.zip opensim-SC_OLD-47b84875fd2b9f01140288a2695c33f5ef4466c0.tar.gz opensim-SC_OLD-47b84875fd2b9f01140288a2695c33f5ef4466c0.tar.bz2 opensim-SC_OLD-47b84875fd2b9f01140288a2695c33f5ef4466c0.tar.xz |
Tell QueryAccess explicitly whether the user is coming in via Teleport or Cross, because the permission checks are different.
Previously we used a heuristic of checking if the entry position is 0 to differentiate between Teleport and Cross, but that doesn't work anymore since we've started providing the precise entry position for cross, too. That's required in order to ensure that the user is allowed to enter the parcel that he's walking into.
Diffstat (limited to 'OpenSim/Server')
-rw-r--r-- | OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 06392f7..7291931 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | |||
@@ -132,6 +132,10 @@ namespace OpenSim.Server.Handlers.Simulation | |||
132 | // m_log.DebugFormat("[AGENT HANDLER]: Received QUERYACCESS with {0}", (string)request["body"]); | 132 | // m_log.DebugFormat("[AGENT HANDLER]: Received QUERYACCESS with {0}", (string)request["body"]); |
133 | OSDMap args = Utils.GetOSDMap((string)request["body"]); | 133 | OSDMap args = Utils.GetOSDMap((string)request["body"]); |
134 | 134 | ||
135 | bool viaTeleport = true; | ||
136 | if (args.ContainsKey("viaTeleport")) | ||
137 | viaTeleport = args["viaTeleport"].AsBoolean(); | ||
138 | |||
135 | Vector3 position = Vector3.Zero; | 139 | Vector3 position = Vector3.Zero; |
136 | if (args.ContainsKey("position")) | 140 | if (args.ContainsKey("position")) |
137 | position = Vector3.Parse(args["position"].AsString()); | 141 | position = Vector3.Parse(args["position"].AsString()); |
@@ -145,7 +149,7 @@ namespace OpenSim.Server.Handlers.Simulation | |||
145 | 149 | ||
146 | string reason; | 150 | string reason; |
147 | string version; | 151 | string version; |
148 | bool result = m_SimulationService.QueryAccess(destination, agentID, agentHomeURI, position, out version, out reason); | 152 | bool result = m_SimulationService.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, out version, out reason); |
149 | 153 | ||
150 | responsedata["int_response_code"] = HttpStatusCode.OK; | 154 | responsedata["int_response_code"] = HttpStatusCode.OK; |
151 | 155 | ||