Attempt at restoring inventory access after TPs/crossings. RemoveClient in Scene was being too

aggressive at nixing the user out of the cache. We're now relying on NeedSceneCacheClear to decide
whether to nix it or not. All other mods in other files are for better debugging messages.
0.6.1-post-fixes
diva 2008-12-15 20:45:40 +00:00
parent 41ad030a5a
commit 8fffdac7fa
4 changed files with 20 additions and 2 deletions

View File

@ -194,6 +194,7 @@ namespace OpenSim.Framework.Communications.Cache
/// </summary>
public void DropInventory()
{
m_log.Debug("[INVENTORY CACHE]: DropInventory called");
// Make sure there aren't pending requests around when we do this
// FIXME: There is still a race condition where an inventory operation can be requested (since these aren't being locked).
// Will have to extend locking to exclude this very soon.

View File

@ -350,11 +350,18 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Inventory.Transfer
// are we even doing here??
//
if (s == scene)
{
//m_log.Debug("[INVTRANSFERMOD]: s == scene. Returning true in " + scene.RegionInfo.RegionName);
return true;
}
else
{
//m_log.Debug("[INVTRANSFERMOD]: s != scene. Returning false in " + scene.RegionInfo.RegionName);
return false;
}
}
}
//m_log.Debug("[INVTRANSFERMOD]: agent not in scene. Returning true in " + scene.RegionInfo.RegionName);
return true;
}
@ -363,12 +370,14 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Inventory.Transfer
//
if (m_AgentRegions[agentID] == scene)
{
//m_log.Debug("[INVTRANSFERMOD]: m_AgentRegions[agentID] == scene. Returning true in " + scene.RegionInfo.RegionName);
m_AgentRegions.Remove(agentID);
return true;
}
// Another region has claimed the agent
//
//m_log.Debug("[INVTRANSFERMOD]: last resort. Returning false in " + scene.RegionInfo.RegionName);
return false;
}

View File

@ -2106,7 +2106,7 @@ namespace OpenSim.Region.Environment.Scenes
string xmlData = Utils.BytesToString(rezAsset.Data);
SceneObjectGroup group = new SceneObjectGroup(xmlData, true);
if (!Permissions.CanRezObject(
group.Children.Count, remoteClient.AgentId, pos)
group.Children.Count, remoteClient.AgentId, pos)
&& !attachment)
{
return null;
@ -2226,7 +2226,11 @@ namespace OpenSim.Region.Environment.Scenes
}
}
}
else
m_log.WarnFormat("[AGENT INVENTORY]: Root folder not found in {0}", RegionInfo.RegionName);
}
else
m_log.WarnFormat("[AGENT INVENTORY]: User profile not found in {0}", RegionInfo.RegionName);
return null;
}

View File

@ -2709,7 +2709,11 @@ namespace OpenSim.Region.Environment.Scenes
m_sceneGraph.removeUserCount(!childagentYN);
RemoveCapsHandler(agentID);
CommsManager.UserProfileCacheService.RemoveUser(agentID);
if (avatar.Scene.NeedSceneCacheClear(avatar.UUID))
{
m_log.InfoFormat("[SCENE]: User {0} is going to another region, profile cache removed in {1}", avatar.UUID, RegionInfo.RegionName);
CommsManager.UserProfileCacheService.RemoveUser(agentID);
}
if (!avatar.IsChildAgent)
{