aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
diff options
context:
space:
mode:
authorOren Hurvitz2014-04-21 14:57:31 +0300
committerOren Hurvitz2014-04-21 16:56:49 +0100
commit4cac87d9f421d937422c0f9afbe1ba66c66bad17 (patch)
tree896ca286529e3b72e9c97f1ee2af3a2e6381a961 /OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
parentBetter error handling when retrieving offline IMs (diff)
downloadopensim-SC_OLD-4cac87d9f421d937422c0f9afbe1ba66c66bad17.zip
opensim-SC_OLD-4cac87d9f421d937422c0f9afbe1ba66c66bad17.tar.gz
opensim-SC_OLD-4cac87d9f421d937422c0f9afbe1ba66c66bad17.tar.bz2
opensim-SC_OLD-4cac87d9f421d937422c0f9afbe1ba66c66bad17.tar.xz
Fixed: when a user logged-in, sometimes he didn't get notified of the Online status of friends, so they continued to appear Offline.
This happened because these notifications (the UDP packets) can only be sent to Root Agents. But the notifications were done in OnClientLogin(), at which point the client is still a Child Agent. Since a FireAndForget is used, it became a race condition as to whether the packets would be sent before or after the client became a Root Agent. To fix this, we now only send the notifications once the client becomes a Root Agent for the first time.
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs2
1 files changed, 2 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
index d00945e..be12935 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs
@@ -239,6 +239,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
239 fList.Add(s.Substring(0, 36)); 239 fList.Add(s.Substring(0, 36));
240 } 240 }
241 241
242 // FIXME: also query the presence status of friends in other grids (like in HGStatusNotifier.Notify())
243
242 PresenceInfo[] presence = PresenceService.GetAgents(fList.ToArray()); 244 PresenceInfo[] presence = PresenceService.GetAgents(fList.ToArray());
243 foreach (PresenceInfo pi in presence) 245 foreach (PresenceInfo pi in presence)
244 { 246 {