(HG)MessageTransferModule: allow direct send to child agents again

This commit is contained in:
UbitUmarov
2021-12-30 20:40:11 +00:00
parent d316379984
commit 321d45882b
2 changed files with 43 additions and 37 deletions

View File

@@ -141,40 +141,36 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
{
UUID toAgentID = new UUID(im.toAgentID);
if (toAgentID == UUID.Zero)
return;
IClientAPI client = null;
// Try root avatar only first
ScenePresence achildsp = null;
// Try root avatar first
foreach (Scene scene in m_Scenes)
{
//m_log.DebugFormat(
// "[HG INSTANT MESSAGE]: Looking for root agent {0} in {1}",
// toAgentID.ToString(), scene.RegionInfo.RegionName);
ScenePresence sp = scene.GetScenePresence(toAgentID);
if (sp != null && !sp.IsDeleted && sp.ControllingClient.IsActive)
if (sp != null && !sp.IsDeleted)
{
// actualy don't send via child agents
// ims can be complex things, and not sure viewers will not mess up
if(sp.IsChildAgent)
continue;
client = sp.ControllingClient;
if(!sp.IsChildAgent)
break;
if (sp.IsChildAgent)
achildsp = sp;
else
{
// m_log.DebugFormat("[HG INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", sp.Name, toAgentID);
sp.ControllingClient.SendInstantMessage(im);
result(true);
return;
}
}
}
if(client != null)
if (achildsp != null)
{
// Local message
// m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", sp.Name, toAgentID);
client.SendInstantMessage(im);
// Message sent
// m_log.DebugFormat("[HG INSTANT MESSAGE]: Delivering IM to child agent {0} {1}", sp.Name, toAgentID);
achildsp.ControllingClient.SendInstantMessage(im);
result(true);
return;
}
// m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to {0} via XMLRPC", im.toAgentID);
//m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to {0} via XMLRPC", im.toAgentID);
SendGridInstantMessageViaXMLRPC(im, result);
}