* Clean up the agent's asset transactions when it is removed from the scene

* This may or may not help with the memory leak, need to assess
ThreadPoolClientBranch
Justin Clarke Casey 2008-02-13 00:52:49 +00:00
parent 365cf8e455
commit 1677bde480
2 changed files with 19 additions and 2 deletions

View File

@ -78,10 +78,25 @@ namespace OpenSim.Framework.Communications.Cache
= new AgentAssetTransactions(userID, this, m_dumpAssetsToFile);
AgentTransactions.Add(userID, transactions);
}
}
return AgentTransactions[userID];
}
}
/// <summary>
/// Remove the given agent asset transactions. This should be called when a client is departing
/// from a scene (and hence won't be making any more transactions here).
/// </summary>
/// <param name="userID"></param>
public void RemoveAgentAssetTransactions(LLUUID userID)
{
m_log.DebugFormat("Removing agent asset transactions structure for agent {0}", userID);
lock (AgentTransactions)
{
AgentTransactions.Remove(userID);
}
}
/// <summary>
/// Create an inventory item from data that has been received through a transaction.

View File

@ -1467,6 +1467,8 @@ namespace OpenSim.Region.Environment.Scenes
ForEachScenePresence(
delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
CommsManager.TransactionsManager.RemoveAgentAssetTransactions(agentID);
lock (m_scenePresences)
{
if (m_scenePresences.Remove(agentID))