diff options
-rw-r--r-- | OpenSim/Addons/Groups/GroupsMessagingModule.cs | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/OpenSim/Addons/Groups/GroupsMessagingModule.cs b/OpenSim/Addons/Groups/GroupsMessagingModule.cs index d172d48..31e9175 100644 --- a/OpenSim/Addons/Groups/GroupsMessagingModule.cs +++ b/OpenSim/Addons/Groups/GroupsMessagingModule.cs | |||
@@ -264,8 +264,32 @@ namespace OpenSim.Groups | |||
264 | 264 | ||
265 | int requestStartTick = Environment.TickCount; | 265 | int requestStartTick = Environment.TickCount; |
266 | 266 | ||
267 | // Copy Message | ||
268 | GridInstantMessage msg = new GridInstantMessage(); | ||
269 | msg.imSessionID = groupID.Guid; | ||
270 | msg.fromAgentName = im.fromAgentName; | ||
271 | msg.message = im.message; | ||
272 | msg.dialog = im.dialog; | ||
273 | msg.offline = im.offline; | ||
274 | msg.ParentEstateID = im.ParentEstateID; | ||
275 | msg.Position = im.Position; | ||
276 | msg.RegionID = im.RegionID; | ||
277 | msg.binaryBucket = im.binaryBucket; | ||
278 | msg.timestamp = (uint)Util.UnixTimeSinceEpoch(); | ||
279 | |||
280 | msg.fromAgentID = im.fromAgentID; | ||
281 | msg.fromGroup = true; | ||
282 | |||
283 | // Send to self first of all | ||
284 | msg.toAgentID = msg.fromAgentID; | ||
285 | ProcessMessageFromGroupSession(msg); | ||
286 | |||
287 | // Then send to everybody else | ||
267 | foreach (GroupMembersData member in groupMembers) | 288 | foreach (GroupMembersData member in groupMembers) |
268 | { | 289 | { |
290 | if (member.AgentID.Guid == im.fromAgentID) | ||
291 | continue; | ||
292 | |||
269 | if (m_groupData.hasAgentDroppedGroupChatSession(member.AgentID.ToString(), groupID)) | 293 | if (m_groupData.hasAgentDroppedGroupChatSession(member.AgentID.ToString(), groupID)) |
270 | { | 294 | { |
271 | // Don't deliver messages to people who have dropped this session | 295 | // Don't deliver messages to people who have dropped this session |
@@ -273,22 +297,6 @@ namespace OpenSim.Groups | |||
273 | continue; | 297 | continue; |
274 | } | 298 | } |
275 | 299 | ||
276 | // Copy Message | ||
277 | GridInstantMessage msg = new GridInstantMessage(); | ||
278 | msg.imSessionID = groupID.Guid; | ||
279 | msg.fromAgentName = im.fromAgentName; | ||
280 | msg.message = im.message; | ||
281 | msg.dialog = im.dialog; | ||
282 | msg.offline = im.offline; | ||
283 | msg.ParentEstateID = im.ParentEstateID; | ||
284 | msg.Position = im.Position; | ||
285 | msg.RegionID = im.RegionID; | ||
286 | msg.binaryBucket = im.binaryBucket; | ||
287 | msg.timestamp = (uint)Util.UnixTimeSinceEpoch(); | ||
288 | |||
289 | msg.fromAgentID = im.fromAgentID; | ||
290 | msg.fromGroup = true; | ||
291 | |||
292 | msg.toAgentID = member.AgentID.Guid; | 300 | msg.toAgentID = member.AgentID.Guid; |
293 | 301 | ||
294 | IClientAPI client = GetActiveClient(member.AgentID); | 302 | IClientAPI client = GetActiveClient(member.AgentID); |