estate kick now just kill user connection if on same region. The teleport home we did, does not make much sense, and would need more work anyways

0.9.1.0-post-fixes
UbitUmarov 2019-02-20 03:05:23 +00:00
parent fdf5274c25
commit b56eb2fe63
3 changed files with 39 additions and 22 deletions

View File

@ -1702,10 +1702,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if(++nsent >= 200) if(++nsent >= 200)
{ {
kill.Header.Reliable = true;
kill.Header.Zerocoded = true;
OutPacket(kill, ThrottleOutPacketType.Task); OutPacket(kill, ThrottleOutPacketType.Task);
perpacket = localIDs.Count - i - 1; perpacket = localIDs.Count - i - 1;
if(perpacket == 0) if(perpacket == 0)
break; break;
@ -1720,8 +1717,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if(nsent != 0) if(nsent != 0)
{ {
kill.Header.Reliable = true;
kill.Header.Zerocoded = true;
OutPacket(kill, ThrottleOutPacketType.Task); OutPacket(kill, ThrottleOutPacketType.Task);
} }
} }
@ -10047,7 +10042,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
UUID.TryParse(Utils.BytesToString(messagePacket.ParamList[1].Parameter), out Prey); UUID.TryParse(Utils.BytesToString(messagePacket.ParamList[1].Parameter), out Prey);
OnEstateTeleportOneUserHomeRequest(this, invoice, SenderID, Prey); OnEstateTeleportOneUserHomeRequest(this, invoice, SenderID, Prey, false);
} }
return true; return true;
case "teleporthomeallusers": case "teleporthomeallusers":
@ -10195,7 +10190,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
UUID.TryParse(Utils.BytesToString(messagePacket.ParamList[0].Parameter), out Prey); UUID.TryParse(Utils.BytesToString(messagePacket.ParamList[0].Parameter), out Prey);
OnEstateTeleportOneUserHomeRequest(this, invoice, SenderID, Prey); OnEstateTeleportOneUserHomeRequest(this, invoice, SenderID, Prey, true);
} }
return true; return true;

View File

@ -1204,28 +1204,33 @@ namespace OpenSim.Region.CoreModules.World.Estate
} }
} }
private void handleEstateTeleportOneUserHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID, UUID prey) private void handleEstateTeleportOneUserHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID, UUID prey, bool kick)
{ {
if (prey == UUID.Zero)
return;
EstateTeleportOneUserHomeRequest evOverride = OnEstateTeleportOneUserHomeRequest; EstateTeleportOneUserHomeRequest evOverride = OnEstateTeleportOneUserHomeRequest;
if(evOverride != null) if(evOverride != null)
{ {
evOverride(remover_client, invoice, senderID, prey); evOverride(remover_client, invoice, senderID, prey, kick);
return; return;
} }
if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false))
return; return;
if (prey != UUID.Zero)
{
ScenePresence s = Scene.GetScenePresence(prey); ScenePresence s = Scene.GetScenePresence(prey);
if (s != null && !s.IsDeleted && !s.IsInTransit) if (s != null && !s.IsDeleted && !s.IsInTransit)
{ {
if (!Scene.TeleportClientHome(prey, s.ControllingClient)) if (kick)
{ {
s.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out."); s.ControllingClient.Kick("You have been kicked");
Scene.CloseAgent(s.UUID, false); Scene.CloseAgent(s.UUID, false);
} }
else if (!Scene.TeleportClientHome(prey, s.ControllingClient))
{
s.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed ");
Scene.CloseAgent(s.UUID, false);
} }
} }
} }

View File

@ -204,7 +204,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
m_EstateConnector.SendEstateMessage(estateID, FromID, FromName, Message); m_EstateConnector.SendEstateMessage(estateID, FromID, FromName, Message);
} }
private void OnEstateTeleportOneUserHomeRequest(IClientAPI client, UUID invoice, UUID senderID, UUID prey) private void OnEstateTeleportOneUserHomeRequest(IClientAPI client, UUID invoice, UUID senderID, UUID prey, bool kick)
{ {
if (prey == UUID.Zero) if (prey == UUID.Zero)
return; return;
@ -226,9 +226,21 @@ namespace OpenSim.Region.CoreModules.World.Estate
ScenePresence p = scene.GetScenePresence(prey); ScenePresence p = scene.GetScenePresence(prey);
if (p != null && !p.IsChildAgent && !p.IsDeleted && !p.IsInTransit) if (p != null && !p.IsChildAgent && !p.IsDeleted && !p.IsInTransit)
{
if (kick)
{
p.ControllingClient.Kick("You have been kicked out");
s.CloseAgent(p.UUID, false);
}
else
{ {
p.ControllingClient.SendTeleportStart(16); p.ControllingClient.SendTeleportStart(16);
scene.TeleportClientHome(prey, client); if (!s.TeleportClientHome(prey, client))
{
p.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed");
s.CloseAgent(p.UUID, false);
}
}
return; return;
} }
} }
@ -259,6 +271,11 @@ namespace OpenSim.Region.CoreModules.World.Estate
{ {
p.ControllingClient.SendTeleportStart(16); p.ControllingClient.SendTeleportStart(16);
scene.TeleportClientHome(p.ControllingClient.AgentId, client); scene.TeleportClientHome(p.ControllingClient.AgentId, client);
if (!s.TeleportClientHome(p.ControllingClient.AgentId, client))
{
p.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out.");
s.CloseAgent(p.UUID, false);
}
} }
}); });
} }