diff options
5 files changed, 14 insertions, 8 deletions
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 36b17be..7601a50 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt | |||
@@ -75,11 +75,12 @@ what it is today. | |||
75 | * controlbreak | 75 | * controlbreak |
76 | * coyled | 76 | * coyled |
77 | * Daedius | 77 | * Daedius |
78 | * Dong Jun Lan (IBM) | ||
79 | * DoranZemlja | ||
80 | * daTwitch | 78 | * daTwitch |
81 | * devalnor-#708 | 79 | * devalnor-#708 |
82 | * dmiles (Daxtron Labs) | 80 | * dmiles (Daxtron Labs) |
81 | * Dong Jun Lan (IBM) | ||
82 | * DoranZemlja | ||
83 | * dr0b3rts | ||
83 | * dslake (Intel) | 84 | * dslake (Intel) |
84 | * FredoChaplin | 85 | * FredoChaplin |
85 | * Garmin Kawaguichi | 86 | * Garmin Kawaguichi |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index e47397d..9784d15 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -4828,7 +4828,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4828 | 4828 | ||
4829 | public void SendForceClientSelectObjects(List<uint> ObjectIDs) | 4829 | public void SendForceClientSelectObjects(List<uint> ObjectIDs) |
4830 | { | 4830 | { |
4831 | m_log.WarnFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count); | 4831 | // m_log.DebugFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count); |
4832 | 4832 | ||
4833 | bool firstCall = true; | 4833 | bool firstCall = true; |
4834 | const int MAX_OBJECTS_PER_PACKET = 251; | 4834 | const int MAX_OBJECTS_PER_PACKET = 251; |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 4613344..41ea2a2 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -685,7 +685,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
685 | // | 685 | // |
686 | 686 | ||
687 | // Try local | 687 | // Try local |
688 | if (LocalFriendshipTerminated(exfriendID)) | 688 | if (LocalFriendshipTerminated(client.AgentId, exfriendID)) |
689 | return; | 689 | return; |
690 | 690 | ||
691 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { exfriendID.ToString() }); | 691 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { exfriendID.ToString() }); |
@@ -827,13 +827,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
827 | return false; | 827 | return false; |
828 | } | 828 | } |
829 | 829 | ||
830 | public bool LocalFriendshipTerminated(UUID exfriendID) | 830 | public bool LocalFriendshipTerminated(UUID userID, UUID exfriendID) |
831 | { | 831 | { |
832 | IClientAPI friendClient = LocateClientObject(exfriendID); | 832 | IClientAPI friendClient = LocateClientObject(exfriendID); |
833 | if (friendClient != null) | 833 | if (friendClient != null) |
834 | { | 834 | { |
835 | // the friend in this sim as root agent | 835 | // the friend in this sim as root agent |
836 | friendClient.SendTerminateFriend(exfriendID); | 836 | friendClient.SendTerminateFriend(userID); |
837 | // update local cache | 837 | // update local cache |
838 | RecacheFriends(friendClient); | 838 | RecacheFriends(friendClient); |
839 | // we're done | 839 | // we're done |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs index 637beef..08196f1 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs | |||
@@ -193,7 +193,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
193 | if (!UUID.TryParse(request["ToID"].ToString(), out toID)) | 193 | if (!UUID.TryParse(request["ToID"].ToString(), out toID)) |
194 | return FailureResult(); | 194 | return FailureResult(); |
195 | 195 | ||
196 | if (m_FriendsModule.LocalFriendshipTerminated(toID)) | 196 | if (m_FriendsModule.LocalFriendshipTerminated(fromID, toID)) |
197 | return SuccessResult(); | 197 | return SuccessResult(); |
198 | 198 | ||
199 | return FailureResult(); | 199 | return FailureResult(); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 8c84c98..8238e23 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -222,7 +222,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
222 | public void SendCloseChildAgentConnections(UUID agentID, List<ulong> regionslst) | 222 | public void SendCloseChildAgentConnections(UUID agentID, List<ulong> regionslst) |
223 | { | 223 | { |
224 | foreach (ulong handle in regionslst) | 224 | foreach (ulong handle in regionslst) |
225 | Util.FireAndForget(delegate { SendCloseChildAgent(agentID, handle); }); | 225 | { |
226 | // We must take a copy here since handle is acts like a reference when used in an iterator. | ||
227 | // This leads to race conditions if directly passed to SendCloseChildAgent with more than one neighbour region. | ||
228 | ulong handleCopy = handle; | ||
229 | Util.FireAndForget((o) => { SendCloseChildAgent(agentID, handleCopy); }); | ||
230 | } | ||
226 | } | 231 | } |
227 | 232 | ||
228 | public List<GridRegion> RequestNamedRegions(string name, int maxNumber) | 233 | public List<GridRegion> RequestNamedRegions(string name, int maxNumber) |