aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorTeravus Ovares2008-04-17 15:58:50 +0000
committerTeravus Ovares2008-04-17 15:58:50 +0000
commit4ee368785db1d278c1bd664b4fcad2dd4c192ffd (patch)
treede49a143ae4b2f0d1d7b522a45c68cb0219d690a /OpenSim
parentFrom: Alan M Webb <awebb@vnet.ibm.com> (diff)
downloadopensim-SC-4ee368785db1d278c1bd664b4fcad2dd4c192ffd.zip
opensim-SC-4ee368785db1d278c1bd664b4fcad2dd4c192ffd.tar.gz
opensim-SC-4ee368785db1d278c1bd664b4fcad2dd4c192ffd.tar.bz2
opensim-SC-4ee368785db1d278c1bd664b4fcad2dd4c192ffd.tar.xz
* Acks the first UseCircuitCode packet
* Implements Teleport One Agent Home
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/ClientView.cs2
-rw-r--r--OpenSim/Region/ClientStack/UDPServer.cs11
-rw-r--r--OpenSim/Region/Environment/EstateManager.cs25
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)