diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs index 38d2d21b42..b8e0c295d2 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs @@ -48,6 +48,10 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage private List m_Scenes = new List(); private Dictionary m_UserRegionMap = new Dictionary(); + public event ExternalHandleIM OnExternalIMCapture; + + private ExternalHandleIM handlerExternalIMCapture; + public void Initialise(Scene scene, IConfigSource config) { IConfig cnf = config.Configs["Messaging"]; @@ -95,6 +99,16 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage public void SendInstantMessage(GridInstantMessage im, MessageResultNotification result) { + handlerExternalIMCapture = OnExternalIMCapture; + if (handlerExternalIMCapture != null) + { + if (handlerExternalIMCapture(im)) + { + result(true); + return; + } + } + UUID toAgentID = new UUID(im.toAgentID); m_log.DebugFormat("[INSTANT MESSAGE]: Attempting delivery of IM from {0} to {1}", im.fromAgentName, toAgentID.ToString()); diff --git a/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs index ffae307809..bc194b92ac 100644 --- a/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IMessageTransferModule.cs @@ -30,9 +30,12 @@ using OpenSim.Framework; namespace OpenSim.Region.Framework.Interfaces { public delegate void MessageResultNotification(bool success); + public delegate bool ExternalHandleIM(GridInstantMessage im); public interface IMessageTransferModule { + event ExternalHandleIM OnExternalIMCapture; + void SendInstantMessage(GridInstantMessage im, MessageResultNotification result); } }