mantis 8131: make the new Offline IM code optional and disabled by default, since it is not compatible with current central servers, like in osgrid.

httptests
UbitUmarov 2017-03-30 16:27:14 +01:00
parent 07c39624ef
commit efed73b2c3
1 changed files with 56 additions and 33 deletions

View File

@ -52,6 +52,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private bool enabled = true; private bool enabled = true;
private bool m_UseNewAvnCode = false;
private List<Scene> m_SceneList = new List<Scene>(); private List<Scene> m_SceneList = new List<Scene>();
private string m_RestURL = String.Empty; private string m_RestURL = String.Empty;
IMessageTransferModule m_TransferModule = null; IMessageTransferModule m_TransferModule = null;
@ -82,6 +83,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
} }
m_ForwardOfflineGroupMessages = cnf.GetBoolean("ForwardOfflineGroupMessages", m_ForwardOfflineGroupMessages); m_ForwardOfflineGroupMessages = cnf.GetBoolean("ForwardOfflineGroupMessages", m_ForwardOfflineGroupMessages);
m_UseNewAvnCode = cnf.GetBoolean("UseNewAvnCode", m_UseNewAvnCode);
} }
public void AddRegion(Scene scene) public void AddRegion(Scene scene)
@ -244,13 +246,15 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
return; return;
} }
if(m_UseNewAvnCode)
{
Scene scene = FindScene(new UUID(im.fromAgentID)); Scene scene = FindScene(new UUID(im.fromAgentID));
if (scene == null) if (scene == null)
scene = m_SceneList[0]; scene = m_SceneList[0];
UUID scopeID = scene.RegionInfo.ScopeID;
SendReply reply = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, SendReply>( SendReply reply = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, SendReply>(
"POST", m_RestURL+"/SaveMessage/?scope=" + "POST", m_RestURL+"/SaveMessage/?scope=" + scopeID.ToString(), im, 20000);
scene.RegionInfo.ScopeID.ToString(), im);
if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
{ {
@ -258,7 +262,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
if (client == null) if (client == null)
return; return;
if (reply.Message == String.Empty) if (string.IsNullOrEmpty(reply.Message))
reply.Message = "User is not logged in. " + (reply.Success ? "Message saved." : "Message not saved"); reply.Message = "User is not logged in. " + (reply.Success ? "Message saved." : "Message not saved");
bool sendReply = true; bool sendReply = true;
@ -269,9 +273,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
break; break;
case 1: // Only once per user case 1: // Only once per user
if (m_repliesSent.ContainsKey(client) && m_repliesSent[client].Contains(new UUID(im.toAgentID))) if (m_repliesSent.ContainsKey(client) && m_repliesSent[client].Contains(new UUID(im.toAgentID)))
{
sendReply = false; sendReply = false;
}
else else
{ {
if (!m_repliesSent.ContainsKey(client)) if (!m_repliesSent.ContainsKey(client))
@ -292,6 +294,27 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
} }
} }
} }
else
{
bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>(
"POST", m_RestURL+"/SaveMessage/", im, 20000);
if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
{
IClientAPI client = FindClient(new UUID(im.fromAgentID));
if (client == null)
return;
client.SendInstantMessage(new GridInstantMessage(
null, new UUID(im.toAgentID),
"System", new UUID(im.fromAgentID),
(byte)InstantMessageDialog.MessageFromAgent,
"User is not logged in. "+
(success ? "Message saved." : "Message not saved"),
false, new Vector3()));
}
}
}
} }
} }