diff --git a/OpenSim/Region/Environment/Modules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Friends/FriendsModule.cs
index c51bcc1cf8..a3807009bc 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/Friends/FriendsModule.cs
@@ -67,7 +67,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
m_scene.Add(scene);
}
scene.EventManager.OnNewClient += OnNewClient;
- scene.EventManager.OnGridInstantMessageToFriendsModule += OnGridInstantMessage;
+ scene.EventManager.OnGridInstantMessage += OnGridInstantMessage;
scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
scene.EventManager.OnMakeChildAgent += MakeChildAgent;
scene.EventManager.OnClientClosed += ClientLoggedOut;
@@ -620,8 +620,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
// TODO: Inform the client that the ExFriend is offline
}
- private void OnGridInstantMessage(GridInstantMessage msg)
+ private void OnGridInstantMessage(GridInstantMessage msg, InstantMessageReceiver whichModule)
{
+ if ((whichModule & InstantMessageReceiver.FriendsModule) == 0)
+ return;
+
// Trigger the above event handler
OnInstantMessage(null, new UUID(msg.fromAgentID), new UUID(msg.fromAgentSession),
new UUID(msg.toAgentID), new UUID(msg.imSessionID), msg.timestamp, msg.fromAgentName,
diff --git a/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs
index 18241345e1..d9a5393232 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs
@@ -99,7 +99,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnClientClosed += OnClientClosed;
- scene.EventManager.OnGridInstantMessageToGroupsModule +=
+ scene.EventManager.OnGridInstantMessage +=
OnGridInstantMessage;
}
@@ -187,8 +187,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
{
}
- private void OnGridInstantMessage(GridInstantMessage msg)
+ private void OnGridInstantMessage(GridInstantMessage msg, InstantMessageReceiver whichModule)
{
+ if ((whichModule & InstantMessageReceiver.GroupsModule) == 0)
+ return;
+
// Trigger the above event handler
OnInstantMessage(null, new UUID(msg.fromAgentID),
new UUID(msg.fromAgentSession),
diff --git a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs
index 255326616d..adf1103ea3 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs
@@ -54,6 +54,14 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
public void Initialise(Scene scene, IConfigSource config)
{
+ if (config.Configs["Messaging"] != null)
+ {
+ if (config.Configs["Messaging"].GetString(
+ "InstantMessageModule", "InstantMessageModule") !=
+ "InstantMessageModule")
+ return;
+ }
+
lock (m_scenes)
{
if (m_scenes.Count == 0)
@@ -67,7 +75,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
{
m_scenes.Add(scene);
scene.EventManager.OnNewClient += OnNewClient;
- scene.EventManager.OnGridInstantMessageToIMModule += OnGridInstantMessage;
+ scene.EventManager.OnGridInstantMessage += OnGridInstantMessage;
}
}
}
@@ -114,7 +122,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
byte[] binaryBucket)
{
bool dialogHandledElsewhere
- = ((dialog == 38) || (dialog == 39) || (dialog == 40)
+ = ( dialog == (byte) InstantMessageDialog.FriendshipOffered
+ || dialog == (byte) InstantMessageDialog.FriendshipAccepted
+ || dialog == (byte) InstantMessageDialog.FriendshipDeclined
|| dialog == (byte) InstantMessageDialog.InventoryOffered
|| dialog == (byte) InstantMessageDialog.InventoryAccepted
|| dialog == (byte) InstantMessageDialog.InventoryDeclined
@@ -197,8 +207,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
///
///
///
- private void OnGridInstantMessage(GridInstantMessage msg)
+ private void OnGridInstantMessage(GridInstantMessage msg, InstantMessageReceiver which)
{
+ if ((which & InstantMessageReceiver.IMModule) == 0)
+ return;
+
// Trigger the above event handler
OnInstantMessage(null, new UUID(msg.fromAgentID), new UUID(msg.fromAgentSession),
new UUID(msg.toAgentID), new UUID(msg.imSessionID), msg.timestamp, msg.fromAgentName,
diff --git a/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs b/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs
index 85e60d7aa2..ba40571297 100644
--- a/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs
+++ b/OpenSim/Region/Environment/Modules/InterGrid/OpenGridProtocolModule.cs
@@ -195,12 +195,6 @@ namespace OpenSim.Region.Environment.Modules.InterGrid
}
}
}
- // Of interest to this module potentially
- //scene.EventManager.OnNewClient += OnNewClient;
- //scene.EventManager.OnGridInstantMessageToFriendsModule += OnGridInstantMessage;
- // scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel;
- //scene.EventManager.OnMakeChildAgent += MakeChildAgent;
- //scene.EventManager.OnClientClosed += ClientLoggedOut;
}
public void PostInitialise()
diff --git a/OpenSim/Region/Environment/Scenes/EventManager.cs b/OpenSim/Region/Environment/Scenes/EventManager.cs
index c629fafb11..99aac93d76 100644
--- a/OpenSim/Region/Environment/Scenes/EventManager.cs
+++ b/OpenSim/Region/Environment/Scenes/EventManager.cs
@@ -135,13 +135,9 @@ namespace OpenSim.Region.Environment.Scenes
public event SignificantClientMovement OnSignificantClientMovement;
- public delegate void NewGridInstantMessage(GridInstantMessage message);
+ public delegate void NewGridInstantMessage(GridInstantMessage message, InstantMessageReceiver whichModule);
- public event NewGridInstantMessage OnGridInstantMessageToIMModule;
-
- public event NewGridInstantMessage OnGridInstantMessageToFriendsModule;
-
- public event NewGridInstantMessage OnGridInstantMessageToGroupsModule;
+ public event NewGridInstantMessage OnGridInstantMessage;
public delegate void ClientClosed(UUID clientID);
@@ -346,8 +342,7 @@ namespace OpenSim.Region.Environment.Scenes
private LandObjectAdded handlerLandObjectAdded = null; //OnLandObjectAdded;
private LandObjectRemoved handlerLandObjectRemoved = null; //OnLandObjectRemoved;
private AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = null; //OnAvatarEnteringNewParcel;
- private NewGridInstantMessage handlerGridInstantMessageToIM = null; //OnGridInstantMessageToIMModule;
- private NewGridInstantMessage handlerGridInstantMessageToFriends = null; //OnGridInstantMessageToFriendsModule;
+ private NewGridInstantMessage handlerGridInstantMessage = null; //OnGridInstantMessage;
private ClientClosed handlerClientClosed = null; //OnClientClosed;
private OnMakeChildAgentDelegate handlerMakeChildAgent = null; //OnMakeChildAgent;
private OnMakeRootAgentDelegate handlerMakeRootAgent = null; //OnMakeRootAgent;
@@ -635,21 +630,10 @@ namespace OpenSim.Region.Environment.Scenes
///A bit vector containing the modules to send the message to
public void TriggerGridInstantMessage(GridInstantMessage message, InstantMessageReceiver whichModule)
{
- if ((whichModule & InstantMessageReceiver.IMModule) != 0)
+ handlerGridInstantMessage = OnGridInstantMessage;
+ if (handlerGridInstantMessage != null)
{
- handlerGridInstantMessageToIM = OnGridInstantMessageToIMModule;
- if (handlerGridInstantMessageToIM != null)
- {
- handlerGridInstantMessageToIM(message);
- }
- }
- if ((whichModule & InstantMessageReceiver.FriendsModule) != 0)
- {
- handlerGridInstantMessageToFriends = OnGridInstantMessageToFriendsModule;
- if (handlerGridInstantMessageToFriends != null)
- {
- handlerGridInstantMessageToFriends(message);
- }
+ handlerGridInstantMessage(message, whichModule);
}
}