diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | 23 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs | 5 |
2 files changed, 13 insertions, 15 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index d28ad0f..5721f33 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -255,24 +255,23 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
255 | client.OnTerminateFriendship += (thisClient, agentID, exfriendID) => RemoveFriendship(thisClient, exfriendID); | 255 | client.OnTerminateFriendship += (thisClient, agentID, exfriendID) => RemoveFriendship(thisClient, exfriendID); |
256 | client.OnGrantUserRights += OnGrantUserRights; | 256 | client.OnGrantUserRights += OnGrantUserRights; |
257 | 257 | ||
258 | // Do not do this asynchronously. If we do, then subsequent code can outrace FetchFriendsList() and | 258 | // Do not do this asynchronously. If we do, then subsequent code can outrace CacheFriends() and |
259 | // return misleading results from the still empty friends cache. | 259 | // return misleading results from the still empty friends cache. |
260 | // If we absolutely need to do this asynchronously, then a signalling mechanism is needed so that calls | 260 | // If we absolutely need to do this asynchronously, then a signalling mechanism is needed so that calls |
261 | // to GetFriends() will wait until FetchFriendslist() completes. Locks are insufficient. | 261 | // to GetFriends() will wait until CacheFriends() completes. Locks are insufficient. |
262 | FetchFriendslist(client); | 262 | CacheFriends(client); |
263 | } | 263 | } |
264 | 264 | ||
265 | 265 | ||
266 | /// <summary> | 266 | /// <summary> |
267 | /// Fetch the friends list or increment the refcount for the existing | 267 | /// Cache the friends list or increment the refcount for the existing friends list. |
268 | /// friends list. | ||
269 | /// </summary> | 268 | /// </summary> |
270 | /// <param name="client"> | 269 | /// <param name="client"> |
271 | /// </param> | 270 | /// </param> |
272 | /// <returns> | 271 | /// <returns> |
273 | /// Returns true if the list was fetched, false if it wasn't | 272 | /// Returns true if the list was fetched, false if it wasn't |
274 | /// </returns> | 273 | /// </returns> |
275 | protected virtual bool FetchFriendslist(IClientAPI client) | 274 | protected virtual bool CacheFriends(IClientAPI client) |
276 | { | 275 | { |
277 | UUID agentID = client.AgentId; | 276 | UUID agentID = client.AgentId; |
278 | lock (m_Friends) | 277 | lock (m_Friends) |
@@ -319,7 +318,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
319 | 318 | ||
320 | private void OnMakeRootAgent(ScenePresence sp) | 319 | private void OnMakeRootAgent(ScenePresence sp) |
321 | { | 320 | { |
322 | RefetchFriends(sp.ControllingClient); | 321 | RecacheFriends(sp.ControllingClient); |
323 | } | 322 | } |
324 | 323 | ||
325 | private void OnClientLogin(IClientAPI client) | 324 | private void OnClientLogin(IClientAPI client) |
@@ -605,7 +604,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
605 | StoreFriendships(client.AgentId, friendID); | 604 | StoreFriendships(client.AgentId, friendID); |
606 | 605 | ||
607 | // Update the local cache | 606 | // Update the local cache |
608 | RefetchFriends(client); | 607 | RecacheFriends(client); |
609 | 608 | ||
610 | // | 609 | // |
611 | // Notify the friend | 610 | // Notify the friend |
@@ -667,7 +666,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
667 | client.SendAlertMessage("Unable to terminate friendship on this sim."); | 666 | client.SendAlertMessage("Unable to terminate friendship on this sim."); |
668 | 667 | ||
669 | // Update local cache | 668 | // Update local cache |
670 | RefetchFriends(client); | 669 | RecacheFriends(client); |
671 | 670 | ||
672 | client.SendTerminateFriend(exfriendID); | 671 | client.SendTerminateFriend(exfriendID); |
673 | 672 | ||
@@ -781,7 +780,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
781 | friendClient.SendInstantMessage(im); | 780 | friendClient.SendInstantMessage(im); |
782 | 781 | ||
783 | // Update the local cache | 782 | // Update the local cache |
784 | RefetchFriends(friendClient); | 783 | RecacheFriends(friendClient); |
785 | 784 | ||
786 | // we're done | 785 | // we're done |
787 | return true; | 786 | return true; |
@@ -814,7 +813,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
814 | // the friend in this sim as root agent | 813 | // the friend in this sim as root agent |
815 | friendClient.SendTerminateFriend(exfriendID); | 814 | friendClient.SendTerminateFriend(exfriendID); |
816 | // update local cache | 815 | // update local cache |
817 | RefetchFriends(friendClient); | 816 | RecacheFriends(friendClient); |
818 | // we're done | 817 | // we're done |
819 | return true; | 818 | return true; |
820 | } | 819 | } |
@@ -913,7 +912,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
913 | return FriendsService.GetFriends(client.AgentId); | 912 | return FriendsService.GetFriends(client.AgentId); |
914 | } | 913 | } |
915 | 914 | ||
916 | private void RefetchFriends(IClientAPI client) | 915 | private void RecacheFriends(IClientAPI client) |
917 | { | 916 | { |
918 | UUID agentID = client.AgentId; | 917 | UUID agentID = client.AgentId; |
919 | lock (m_Friends) | 918 | lock (m_Friends) |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs index 02b417f..56bba75 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs | |||
@@ -30,7 +30,6 @@ using System.Collections; | |||
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using System.Threading; | 32 | using System.Threading; |
33 | |||
34 | using log4net; | 33 | using log4net; |
35 | using Nini.Config; | 34 | using Nini.Config; |
36 | using Nwc.XmlRpc; | 35 | using Nwc.XmlRpc; |
@@ -84,9 +83,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
84 | 83 | ||
85 | #endregion | 84 | #endregion |
86 | 85 | ||
87 | protected override bool FetchFriendslist(IClientAPI client) | 86 | protected override bool CacheFriends(IClientAPI client) |
88 | { | 87 | { |
89 | if (base.FetchFriendslist(client)) | 88 | if (base.CacheFriends(client)) |
90 | { | 89 | { |
91 | UUID agentID = client.AgentId; | 90 | UUID agentID = client.AgentId; |
92 | // we do this only for the root agent | 91 | // we do this only for the root agent |