aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie2009-11-05 17:29:52 +0000
committerMelanie2009-11-05 17:29:52 +0000
commitec0d5b408adad5c806cad7b9cbce3ca37069dcaf (patch)
tree4910e859b1537cf472a5435c2c8f03dddc335dfd /OpenSim/Region
parentRemove a spammy debug message from friends list check in the perms module. (diff)
downloadopensim-SC_OLD-ec0d5b408adad5c806cad7b9cbce3ca37069dcaf.zip
opensim-SC_OLD-ec0d5b408adad5c806cad7b9cbce3ca37069dcaf.tar.gz
opensim-SC_OLD-ec0d5b408adad5c806cad7b9cbce3ca37069dcaf.tar.bz2
opensim-SC_OLD-ec0d5b408adad5c806cad7b9cbce3ca37069dcaf.tar.xz
Change the permissions module to use the friend list cache already in the
friends module instead of requesting the entire friends list over the network each time a prim is touched.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs12
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs17
-rw-r--r--OpenSim/Region/Framework/Interfaces/IFriendsModule.cs2
3 files changed, 29 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
index c6fd72e..bb4e032 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
@@ -1114,6 +1114,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
1114 { 1114 {
1115 ((Scene)remoteClient.Scene).CommsManager.UpdateUserFriendPerms(requester, target, (uint)rights); 1115 ((Scene)remoteClient.Scene).CommsManager.UpdateUserFriendPerms(requester, target, (uint)rights);
1116 } 1116 }
1117
1118 public List<FriendListItem> GetUserFriends(UUID agentID)
1119 {
1120 List<FriendListItem> fl;
1121 lock (m_friendLists)
1122 {
1123 fl = (List<FriendListItem>)m_friendLists.Get(agentID.ToString(),
1124 m_initialScene.GetFriendList);
1125 }
1126
1127 return fl;
1128 }
1117 } 1129 }
1118 #endregion 1130 #endregion
1119} 1131}
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index f7675f4..c790624 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -144,6 +144,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
144 private Dictionary<string, bool> GrantVB = new Dictionary<string, bool>(); 144 private Dictionary<string, bool> GrantVB = new Dictionary<string, bool>();
145 private Dictionary<string, bool> GrantJS = new Dictionary<string, bool>(); 145 private Dictionary<string, bool> GrantJS = new Dictionary<string, bool>();
146 private Dictionary<string, bool> GrantYP = new Dictionary<string, bool>(); 146 private Dictionary<string, bool> GrantYP = new Dictionary<string, bool>();
147 private IFriendsModule m_friendsModule = null;
148
147 #endregion 149 #endregion
148 150
149 #region IRegionModule Members 151 #region IRegionModule Members
@@ -363,6 +365,12 @@ namespace OpenSim.Region.CoreModules.World.Permissions
363 365
364 public void PostInitialise() 366 public void PostInitialise()
365 { 367 {
368 m_friendsModule = m_scene.RequestModuleInterface<IFriendsModule>();
369
370 if (m_friendsModule == null)
371 m_log.Error("[PERMISSIONS]: Friends module not found, friend permissions will not work");
372 else
373 m_log.Info("[PERMISSIONS]: Friends module found, friend permissions enabled");
366 } 374 }
367 375
368 public void Close() 376 public void Close()
@@ -479,9 +487,14 @@ namespace OpenSim.Region.CoreModules.World.Permissions
479 protected bool IsFriendWithPerms(UUID user,UUID objectOwner) 487 protected bool IsFriendWithPerms(UUID user,UUID objectOwner)
480 { 488 {
481 489
482 if (user == UUID.Zero) return false; 490 if (user == UUID.Zero)
491 return false;
492
493 if (m_friendsModule == null)
494 return false;
495
496 List<FriendListItem> profile = m_friendsModule.GetUserFriends(user);
483 497
484 List<FriendListItem> profile = m_scene.CommsManager.GetUserFriendList(user);
485 foreach (FriendListItem item in profile) 498 foreach (FriendListItem item in profile)
486 { 499 {
487 if(item.Friend == objectOwner && (item.FriendPerms & (uint)FriendRights.CanModifyObjects) != 0) 500 if(item.Friend == objectOwner && (item.FriendPerms & (uint)FriendRights.CanModifyObjects) != 0)
diff --git a/OpenSim/Region/Framework/Interfaces/IFriendsModule.cs b/OpenSim/Region/Framework/Interfaces/IFriendsModule.cs
index 7a8aba2..8386030 100644
--- a/OpenSim/Region/Framework/Interfaces/IFriendsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IFriendsModule.cs
@@ -27,6 +27,7 @@
27 27
28using OpenMetaverse; 28using OpenMetaverse;
29using OpenSim.Framework; 29using OpenSim.Framework;
30using System.Collections.Generic;
30 31
31namespace OpenSim.Region.Framework.Interfaces 32namespace OpenSim.Region.Framework.Interfaces
32{ 33{
@@ -45,5 +46,6 @@ namespace OpenSim.Region.Framework.Interfaces
45 /// </param> 46 /// </param>
46 /// <param name="offerMessage"></param> 47 /// <param name="offerMessage"></param>
47 void OfferFriendship(UUID fromUserId, IClientAPI toUserClient, string offerMessage); 48 void OfferFriendship(UUID fromUserId, IClientAPI toUserClient, string offerMessage);
49 List<FriendListItem> GetUserFriends(UUID agentID);
48 } 50 }
49} 51}