aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-02-15 01:13:58 +0000
committerJustin Clark-Casey (justincc)2014-02-15 01:13:58 +0000
commitf74aafaf633c84d645a7bb0fde1e09c410bfa4d3 (patch)
tree41d2a91de39679337779b83bd99a06dcd747d319
parentChange warns associated with UserAgentServiceConnector to debugs, as this is ... (diff)
downloadopensim-SC_OLD-f74aafaf633c84d645a7bb0fde1e09c410bfa4d3.zip
opensim-SC_OLD-f74aafaf633c84d645a7bb0fde1e09c410bfa4d3.tar.gz
opensim-SC_OLD-f74aafaf633c84d645a7bb0fde1e09c410bfa4d3.tar.bz2
opensim-SC_OLD-f74aafaf633c84d645a7bb0fde1e09c410bfa4d3.tar.xz
In GridUserService, if a UUID is given consistently use the longest matched entry (as already done by GetGridUserInfo()) in order to avoid problems with multiple entries.
This is to avoid issues where LoggedIn, SetHome, etc were always using the exact UUID match but GetGridUserInfo() would use the longest. Looks to address http://opensimulator.org/mantis/view.php?id=6986
-rw-r--r--OpenSim/Services/UserAccountService/GridUserService.cs25
1 files changed, 19 insertions, 6 deletions
diff --git a/OpenSim/Services/UserAccountService/GridUserService.cs b/OpenSim/Services/UserAccountService/GridUserService.cs
index bfc27b5..5aa2078 100644
--- a/OpenSim/Services/UserAccountService/GridUserService.cs
+++ b/OpenSim/Services/UserAccountService/GridUserService.cs
@@ -120,11 +120,13 @@ namespace OpenSim.Services.UserAccountService
120 MainConsole.Instance.OutputFormat("Users online: {0}", onlineRecentlyCount); 120 MainConsole.Instance.OutputFormat("Users online: {0}", onlineRecentlyCount);
121 } 121 }
122 122
123 public virtual GridUserInfo GetGridUserInfo(string userID) 123 private GridUserData GetGridUserData(string userID)
124 { 124 {
125 GridUserData d = null; 125 GridUserData d = null;
126 if (userID.Length > 36) // it's a UUI 126 if (userID.Length > 36) // it's a UUI
127 {
127 d = m_Database.Get(userID); 128 d = m_Database.Get(userID);
129 }
128 else // it's a UUID 130 else // it's a UUID
129 { 131 {
130 GridUserData[] ds = m_Database.GetAll(userID); 132 GridUserData[] ds = m_Database.GetAll(userID);
@@ -140,6 +142,13 @@ namespace OpenSim.Services.UserAccountService
140 } 142 }
141 } 143 }
142 144
145 return d;
146 }
147
148 public virtual GridUserInfo GetGridUserInfo(string userID)
149 {
150 GridUserData d = GetGridUserData(userID);
151
143 if (d == null) 152 if (d == null)
144 return null; 153 return null;
145 154
@@ -173,7 +182,8 @@ namespace OpenSim.Services.UserAccountService
173 public GridUserInfo LoggedIn(string userID) 182 public GridUserInfo LoggedIn(string userID)
174 { 183 {
175 m_log.DebugFormat("[GRID USER SERVICE]: User {0} is online", userID); 184 m_log.DebugFormat("[GRID USER SERVICE]: User {0} is online", userID);
176 GridUserData d = m_Database.Get(userID); 185
186 GridUserData d = GetGridUserData(userID);
177 187
178 if (d == null) 188 if (d == null)
179 { 189 {
@@ -192,7 +202,8 @@ namespace OpenSim.Services.UserAccountService
192 public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt) 202 public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt)
193 { 203 {
194 m_log.DebugFormat("[GRID USER SERVICE]: User {0} is offline", userID); 204 m_log.DebugFormat("[GRID USER SERVICE]: User {0} is offline", userID);
195 GridUserData d = m_Database.Get(userID); 205
206 GridUserData d = GetGridUserData(userID);
196 207
197 if (d == null) 208 if (d == null)
198 { 209 {
@@ -211,7 +222,8 @@ namespace OpenSim.Services.UserAccountService
211 222
212 public bool SetHome(string userID, UUID homeID, Vector3 homePosition, Vector3 homeLookAt) 223 public bool SetHome(string userID, UUID homeID, Vector3 homePosition, Vector3 homeLookAt)
213 { 224 {
214 GridUserData d = m_Database.Get(userID); 225 GridUserData d = GetGridUserData(userID);
226
215 if (d == null) 227 if (d == null)
216 { 228 {
217 d = new GridUserData(); 229 d = new GridUserData();
@@ -229,7 +241,8 @@ namespace OpenSim.Services.UserAccountService
229 { 241 {
230// m_log.DebugFormat("[GRID USER SERVICE]: SetLastPosition for {0}", userID); 242// m_log.DebugFormat("[GRID USER SERVICE]: SetLastPosition for {0}", userID);
231 243
232 GridUserData d = m_Database.Get(userID); 244 GridUserData d = GetGridUserData(userID);
245
233 if (d == null) 246 if (d == null)
234 { 247 {
235 d = new GridUserData(); 248 d = new GridUserData();
@@ -243,4 +256,4 @@ namespace OpenSim.Services.UserAccountService
243 return m_Database.Store(d); 256 return m_Database.Store(d);
244 } 257 }
245 } 258 }
246} 259} \ No newline at end of file