Merge branch 'master' of ssh://opensimulator.org/var/git/opensim

cpu-performance
Diva Canto 2013-06-07 16:01:07 -07:00
commit 6aa54a8e16
5 changed files with 14 additions and 8 deletions

View File

@ -75,11 +75,12 @@ what it is today.
* controlbreak
* coyled
* Daedius
* Dong Jun Lan (IBM)
* DoranZemlja
* daTwitch
* devalnor-#708
* dmiles (Daxtron Labs)
* Dong Jun Lan (IBM)
* DoranZemlja
* dr0b3rts
* dslake (Intel)
* FredoChaplin
* Garmin Kawaguichi

View File

@ -4828,7 +4828,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendForceClientSelectObjects(List<uint> ObjectIDs)
{
m_log.WarnFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count);
// m_log.DebugFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count);
bool firstCall = true;
const int MAX_OBJECTS_PER_PACKET = 251;

View File

@ -685,7 +685,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
//
// Try local
if (LocalFriendshipTerminated(exfriendID))
if (LocalFriendshipTerminated(client.AgentId, exfriendID))
return;
PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { exfriendID.ToString() });
@ -827,13 +827,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
return false;
}
public bool LocalFriendshipTerminated(UUID exfriendID)
public bool LocalFriendshipTerminated(UUID userID, UUID exfriendID)
{
IClientAPI friendClient = LocateClientObject(exfriendID);
if (friendClient != null)
{
// the friend in this sim as root agent
friendClient.SendTerminateFriend(exfriendID);
friendClient.SendTerminateFriend(userID);
// update local cache
RecacheFriends(friendClient);
// we're done

View File

@ -193,7 +193,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (!UUID.TryParse(request["ToID"].ToString(), out toID))
return FailureResult();
if (m_FriendsModule.LocalFriendshipTerminated(toID))
if (m_FriendsModule.LocalFriendshipTerminated(fromID, toID))
return SuccessResult();
return FailureResult();

View File

@ -222,7 +222,12 @@ namespace OpenSim.Region.Framework.Scenes
public void SendCloseChildAgentConnections(UUID agentID, List<ulong> regionslst)
{
foreach (ulong handle in regionslst)
Util.FireAndForget(delegate { SendCloseChildAgent(agentID, handle); });
{
// We must take a copy here since handle is acts like a reference when used in an iterator.
// This leads to race conditions if directly passed to SendCloseChildAgent with more than one neighbour region.
ulong handleCopy = handle;
Util.FireAndForget((o) => { SendCloseChildAgent(agentID, handleCopy); });
}
}
public List<GridRegion> RequestNamedRegions(string name, int maxNumber)