diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/UDPServer.cs | 11 | ||||
-rw-r--r-- | OpenSim/Region/Environment/EstateManager.cs | 25 |
3 files changed, 37 insertions, 1 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 7a3cff1..89b0400 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -324,7 +324,7 @@ namespace OpenSim.Region.ClientStack | |||
324 | 324 | ||
325 | m_userEndPoint = remoteEP; | 325 | m_userEndPoint = remoteEP; |
326 | m_proxyEndPoint = proxyEP; | 326 | m_proxyEndPoint = proxyEP; |
327 | 327 | ||
328 | m_startpos = m_authenticateSessionsHandler.GetPosition(circuitCode); | 328 | m_startpos = m_authenticateSessionsHandler.GetPosition(circuitCode); |
329 | 329 | ||
330 | // While working on this, the BlockingQueue had me fooled for a bit. | 330 | // While working on this, the BlockingQueue had me fooled for a bit. |
diff --git a/OpenSim/Region/ClientStack/UDPServer.cs b/OpenSim/Region/ClientStack/UDPServer.cs index 3d1512f..7a4cc97 100644 --- a/OpenSim/Region/ClientStack/UDPServer.cs +++ b/OpenSim/Region/ClientStack/UDPServer.cs | |||
@@ -295,6 +295,17 @@ namespace OpenSim.Region.ClientStack | |||
295 | // new client | 295 | // new client |
296 | m_log.Debug("[UDPSERVER]: Adding New Client"); | 296 | m_log.Debug("[UDPSERVER]: Adding New Client"); |
297 | AddNewClient(packet); | 297 | AddNewClient(packet); |
298 | |||
299 | UseCircuitCodePacket p = (UseCircuitCodePacket)packet; | ||
300 | |||
301 | // Ack the first UseCircuitCode packet | ||
302 | PacketAckPacket ack_it = (PacketAckPacket)PacketPool.Instance.GetPacket(PacketType.PacketAck); | ||
303 | // TODO: don't create new blocks if recycling an old packet | ||
304 | ack_it.Packets = new PacketAckPacket.PacketsBlock[1]; | ||
305 | ack_it.Packets[0] = new PacketAckPacket.PacketsBlock(); | ||
306 | ack_it.Packets[0].ID = packet.Header.Sequence; | ||
307 | ack_it.Header.Reliable = false; | ||
308 | SendPacketTo(ack_it.ToBytes(),ack_it.ToBytes().Length,SocketFlags.None,p.CircuitCode.Code); | ||
298 | } | 309 | } |
299 | else | 310 | else |
300 | { | 311 | { |
diff --git a/OpenSim/Region/Environment/EstateManager.cs b/OpenSim/Region/Environment/EstateManager.cs index ec556a6..ba4f0c6 100644 --- a/OpenSim/Region/Environment/EstateManager.cs +++ b/OpenSim/Region/Environment/EstateManager.cs | |||
@@ -221,10 +221,35 @@ namespace OpenSim.Region.Environment | |||
221 | SetRegionDebug(remote_client, packet); | 221 | SetRegionDebug(remote_client, packet); |
222 | } | 222 | } |
223 | break; | 223 | break; |
224 | case "teleporthomeuser": | ||
225 | if (m_scene.PermissionsMngr.GenericEstatePermission(remote_client.AgentId)) | ||
226 | { | ||
227 | TeleportOneUserHome(remote_client,packet); | ||
228 | } | ||
229 | break; | ||
224 | default: | 230 | default: |
225 | m_log.Error("EstateOwnerMessage: Unknown method requested\n" + packet.ToString()); | 231 | m_log.Error("EstateOwnerMessage: Unknown method requested\n" + packet.ToString()); |
226 | break; | 232 | break; |
227 | } | 233 | } |
234 | |||
235 | |||
236 | } | ||
237 | |||
238 | private void TeleportOneUserHome(object remove_client,EstateOwnerMessagePacket packet) | ||
239 | { | ||
240 | LLUUID invoice = packet.MethodData.Invoice; | ||
241 | LLUUID SenderID = packet.AgentData.AgentID; | ||
242 | LLUUID Prey = LLUUID.Zero; | ||
243 | |||
244 | Helpers.TryParse(Helpers.FieldToUTF8String(packet.ParamList[1].Parameter),out Prey); | ||
245 | if (Prey != LLUUID.Zero) | ||
246 | { | ||
247 | ScenePresence s = m_scene.GetScenePresence(Prey); | ||
248 | if (s != null) | ||
249 | { | ||
250 | m_scene.TeleportClientHome(Prey, s.ControllingClient); | ||
251 | } | ||
252 | } | ||
228 | } | 253 | } |
229 | 254 | ||
230 | private void SetRegionDebug(IClientAPI remote_client, EstateOwnerMessagePacket packet) | 255 | private void SetRegionDebug(IClientAPI remote_client, EstateOwnerMessagePacket packet) |