add a adicional in transit flag to signal HG tps, and use it to ignore usernames requests sent to start region during tp; don't send unknows display names ( getdisplaynames cap )
parent
e8165a7b51
commit
be975d1e89
|
@ -1577,7 +1577,10 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
break;
|
break;
|
||||||
|
|
||||||
m_Scene.TryGetScenePresence(m_AgentID, out sp);
|
m_Scene.TryGetScenePresence(m_AgentID, out sp);
|
||||||
if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit)
|
if(sp == null || sp.IsChildAgent || sp.IsDeleted)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if(sp.IsInTransit && !sp.IsInLocalTransit)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
client = sp.ControllingClient;
|
client = sp.ControllingClient;
|
||||||
|
@ -1699,7 +1702,10 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
break;
|
break;
|
||||||
|
|
||||||
m_Scene.TryGetScenePresence(m_AgentID, out sp);
|
m_Scene.TryGetScenePresence(m_AgentID, out sp);
|
||||||
if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit)
|
if(sp == null || sp.IsChildAgent || sp.IsDeleted)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if(sp.IsInTransit && !sp.IsInLocalTransit)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
client = sp.ControllingClient;
|
client = sp.ControllingClient;
|
||||||
|
@ -1807,7 +1813,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
if(sp == null || sp.IsDeleted)
|
if(sp == null || sp.IsDeleted)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
if(sp.IsInTransit)
|
if(sp.IsInTransit && !sp.IsInLocalTransit)
|
||||||
{
|
{
|
||||||
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.ServiceUnavailable;
|
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.ServiceUnavailable;
|
||||||
httpResponse.AddHeader("Retry-After","30");
|
httpResponse.AddHeader("Retry-After","30");
|
||||||
|
@ -1817,7 +1823,6 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
|
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
|
||||||
string[] ids = query.GetValues("ids");
|
string[] ids = query.GetValues("ids");
|
||||||
|
|
||||||
|
|
||||||
Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids);
|
Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids);
|
||||||
|
|
||||||
OSDMap osdReply = new OSDMap();
|
OSDMap osdReply = new OSDMap();
|
||||||
|
@ -1833,12 +1838,18 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
|
|
||||||
string[] parts = kvp.Value.Split(new char[] {' '});
|
string[] parts = kvp.Value.Split(new char[] {' '});
|
||||||
OSDMap osdname = new OSDMap();
|
OSDMap osdname = new OSDMap();
|
||||||
|
|
||||||
|
// dont tell about unknown users, we can't send them back on Bad either
|
||||||
|
if(parts[0] == "Unknown")
|
||||||
|
continue;
|
||||||
|
/*
|
||||||
if(parts[0] == "Unknown")
|
if(parts[0] == "Unknown")
|
||||||
{
|
{
|
||||||
osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1));
|
osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1));
|
||||||
osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2));
|
osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8));
|
osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8));
|
||||||
osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1));
|
osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1));
|
||||||
|
|
|
@ -6473,8 +6473,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack)
|
private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack)
|
||||||
{
|
{
|
||||||
UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket)Pack;
|
ScenePresence sp = (ScenePresence)SceneAgent;
|
||||||
|
if(sp == null || sp.IsDeleted || (sp.IsInTransit && !sp.IsInLocalTransit))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket)Pack;
|
||||||
|
|
||||||
for (int i = 0; i < upack.UUIDNameBlock.Length; i++)
|
for (int i = 0; i < upack.UUIDNameBlock.Length; i++)
|
||||||
{
|
{
|
||||||
|
@ -7493,7 +7496,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
SendUserInfoReply(false, true, "");
|
SendUserInfoReply(false, true, "");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool HandleUpdateUserInfo(IClientAPI sender, Packet Pack)
|
private bool HandleUpdateUserInfo(IClientAPI sender, Packet Pack)
|
||||||
|
@ -9648,6 +9650,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
private bool HandleUUIDNameRequest(IClientAPI sender, Packet Pack)
|
private bool HandleUUIDNameRequest(IClientAPI sender, Packet Pack)
|
||||||
{
|
{
|
||||||
|
ScenePresence sp = (ScenePresence)SceneAgent;
|
||||||
|
if(sp == null || sp.IsDeleted || (sp.IsInTransit && !sp.IsInLocalTransit))
|
||||||
|
return true;
|
||||||
|
|
||||||
UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack;
|
UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack;
|
||||||
|
|
||||||
foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock)
|
foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock)
|
||||||
|
|
|
@ -771,8 +771,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
else if (sp.Flying)
|
else if (sp.Flying)
|
||||||
teleportFlags |= (uint)TeleportFlags.IsFlying;
|
teleportFlags |= (uint)TeleportFlags.IsFlying;
|
||||||
|
|
||||||
|
sp.IsInLocalTransit = finalDestination.RegionLocY != 0; // HG
|
||||||
sp.IsInTransit = true;
|
sp.IsInTransit = true;
|
||||||
|
|
||||||
|
|
||||||
if (DisableInterRegionTeleportCancellation)
|
if (DisableInterRegionTeleportCancellation)
|
||||||
teleportFlags |= (uint)TeleportFlags.DisableCancel;
|
teleportFlags |= (uint)TeleportFlags.DisableCancel;
|
||||||
|
|
||||||
|
@ -1524,6 +1526,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
public bool Cross(ScenePresence agent, bool isFlying)
|
public bool Cross(ScenePresence agent, bool isFlying)
|
||||||
{
|
{
|
||||||
|
agent.IsInLocalTransit = true;
|
||||||
agent.IsInTransit = true;
|
agent.IsInTransit = true;
|
||||||
CrossAsyncDelegate d = CrossAsync;
|
CrossAsyncDelegate d = CrossAsync;
|
||||||
d.BeginInvoke(agent, isFlying, CrossCompleted, d);
|
d.BeginInvoke(agent, isFlying, CrossCompleted, d);
|
||||||
|
|
|
@ -175,6 +175,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||||
{
|
{
|
||||||
client.OnNameFromUUIDRequest -= new UUIDNameRequest(HandleUUIDNameRequest);
|
client.OnNameFromUUIDRequest -= new UUIDNameRequest(HandleUUIDNameRequest);
|
||||||
client.OnAvatarPickerRequest -= new AvatarPickerRequest(HandleAvatarPickerRequest);
|
client.OnAvatarPickerRequest -= new AvatarPickerRequest(HandleAvatarPickerRequest);
|
||||||
|
client.OnConnectionClosed -= new Action<IClientAPI>(HandleConnectionClosed);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void HandleUUIDNameRequest(UUID uuid, IClientAPI client)
|
protected virtual void HandleUUIDNameRequest(UUID uuid, IClientAPI client)
|
||||||
|
|
|
@ -807,6 +807,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
foreach (avtocrossInfo avinfo in avsToCross)
|
foreach (avtocrossInfo avinfo in avsToCross)
|
||||||
{
|
{
|
||||||
ScenePresence av = avinfo.av;
|
ScenePresence av = avinfo.av;
|
||||||
|
av.IsInLocalTransit = true;
|
||||||
av.IsInTransit = true;
|
av.IsInTransit = true;
|
||||||
m_log.DebugFormat("[SCENE OBJECT]: Crossing avatar {0} to {1}", av.Name, val);
|
m_log.DebugFormat("[SCENE OBJECT]: Crossing avatar {0} to {1}", av.Name, val);
|
||||||
|
|
||||||
|
|
|
@ -971,6 +971,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_inTransit = value;
|
m_inTransit = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// this is is only valid if IsInTransit is true
|
||||||
|
// only false on HG tps
|
||||||
|
// used work arounf viewers asking source region about destination user
|
||||||
|
public bool IsInLocalTransit {get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1040,6 +1044,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_uuid = client.AgentId;
|
m_uuid = client.AgentId;
|
||||||
LocalId = m_scene.AllocateLocalId();
|
LocalId = m_scene.AllocateLocalId();
|
||||||
LegacySitOffsets = m_scene.LegacySitOffsets;
|
LegacySitOffsets = m_scene.LegacySitOffsets;
|
||||||
|
IsInLocalTransit = true;
|
||||||
|
|
||||||
UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid);
|
UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid);
|
||||||
if (account != null)
|
if (account != null)
|
||||||
|
|
Loading…
Reference in New Issue