diff options
author | Mike Mazur | 2008-08-12 06:21:02 +0000 |
---|---|---|
committer | Mike Mazur | 2008-08-12 06:21:02 +0000 |
commit | 8ea92c0669de17f4967540ecc1350860aa346f06 (patch) | |
tree | fb3502211612e8b34e1102ba39880a2fd77f2e5c /OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | |
parent | Remove "static" from the AsyncCommand Manager to make it work properly (diff) | |
download | opensim-SC-8ea92c0669de17f4967540ecc1350860aa346f06.zip opensim-SC-8ea92c0669de17f4967540ecc1350860aa346f06.tar.gz opensim-SC-8ea92c0669de17f4967540ecc1350860aa346f06.tar.bz2 opensim-SC-8ea92c0669de17f4967540ecc1350860aa346f06.tar.xz |
Thanks, lulurun, for a patch that addresses inventory problems that occur
occasionally, but are fixed on restart (issue 1919).
This patch introduces the following changes:
1. when a user teleports out of Region A, remove that user's profile
from the Region A user profile cache
2. when a user crosses between regions out of Region A, remove that
user's profile from the Region A user profile cache
3. the user profile cache's session ID member can now be set (written),
and is updated each time a connection with a new avatar is established (ie: a
new avatar enters the region)
4. when a region server looks up a user profile and a cache miss
occurs, fetch the user profile from the user server first instead of
immediately returning null
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index d85eda0..57f5e76 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | |||
@@ -85,8 +85,12 @@ namespace OpenSim.Framework.Communications.Cache | |||
85 | /// </summary> | 85 | /// </summary> |
86 | private IDictionary<LLUUID, IList<InventoryFolderImpl>> pendingCategorizationFolders | 86 | private IDictionary<LLUUID, IList<InventoryFolderImpl>> pendingCategorizationFolders |
87 | = new Dictionary<LLUUID, IList<InventoryFolderImpl>>(); | 87 | = new Dictionary<LLUUID, IList<InventoryFolderImpl>>(); |
88 | 88 | ||
89 | public LLUUID SessionID { get { return m_session_id; } } | 89 | public LLUUID SessionID |
90 | { | ||
91 | get { return m_session_id; } | ||
92 | set { m_session_id = value; } | ||
93 | } | ||
90 | private LLUUID m_session_id = LLUUID.Zero; | 94 | private LLUUID m_session_id = LLUUID.Zero; |
91 | 95 | ||
92 | /// <summary> | 96 | /// <summary> |
@@ -101,21 +105,6 @@ namespace OpenSim.Framework.Communications.Cache | |||
101 | } | 105 | } |
102 | 106 | ||
103 | /// <summary> | 107 | /// <summary> |
104 | /// Constructor | ||
105 | /// </summary> | ||
106 | /// <param name="commsManager"></param> | ||
107 | /// <param name="userProfile"></param> | ||
108 | /// <param name="sessionId"> | ||
109 | /// Session id of the user. This is used in subsequent security checks. | ||
110 | /// </param> | ||
111 | public CachedUserInfo(CommunicationsManager commsManager, UserProfileData userProfile, LLUUID sessionId) | ||
112 | { | ||
113 | m_commsManager = commsManager; | ||
114 | m_userProfile = userProfile; | ||
115 | m_session_id = sessionId; | ||
116 | } | ||
117 | |||
118 | /// <summary> | ||
119 | /// This allows a request to be added to be processed once we receive a user's inventory | 108 | /// This allows a request to be added to be processed once we receive a user's inventory |
120 | /// from the inventory service. If we already have the inventory, the request | 109 | /// from the inventory service. If we already have the inventory, the request |
121 | /// is executed immediately instead. | 110 | /// is executed immediately instead. |