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=6986justincc-master
parent
f49d513089
commit
f74aafaf63
|
@ -120,11 +120,13 @@ namespace OpenSim.Services.UserAccountService
|
||||||
MainConsole.Instance.OutputFormat("Users online: {0}", onlineRecentlyCount);
|
MainConsole.Instance.OutputFormat("Users online: {0}", onlineRecentlyCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual GridUserInfo GetGridUserInfo(string userID)
|
private GridUserData GetGridUserData(string userID)
|
||||||
{
|
{
|
||||||
GridUserData d = null;
|
GridUserData d = null;
|
||||||
if (userID.Length > 36) // it's a UUI
|
if (userID.Length > 36) // it's a UUI
|
||||||
|
{
|
||||||
d = m_Database.Get(userID);
|
d = m_Database.Get(userID);
|
||||||
|
}
|
||||||
else // it's a UUID
|
else // it's a UUID
|
||||||
{
|
{
|
||||||
GridUserData[] ds = m_Database.GetAll(userID);
|
GridUserData[] ds = m_Database.GetAll(userID);
|
||||||
|
@ -140,6 +142,13 @@ namespace OpenSim.Services.UserAccountService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual GridUserInfo GetGridUserInfo(string userID)
|
||||||
|
{
|
||||||
|
GridUserData d = GetGridUserData(userID);
|
||||||
|
|
||||||
if (d == null)
|
if (d == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
@ -173,7 +182,8 @@ namespace OpenSim.Services.UserAccountService
|
||||||
public GridUserInfo LoggedIn(string userID)
|
public GridUserInfo LoggedIn(string userID)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[GRID USER SERVICE]: User {0} is online", userID);
|
m_log.DebugFormat("[GRID USER SERVICE]: User {0} is online", userID);
|
||||||
GridUserData d = m_Database.Get(userID);
|
|
||||||
|
GridUserData d = GetGridUserData(userID);
|
||||||
|
|
||||||
if (d == null)
|
if (d == null)
|
||||||
{
|
{
|
||||||
|
@ -192,7 +202,8 @@ namespace OpenSim.Services.UserAccountService
|
||||||
public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt)
|
public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[GRID USER SERVICE]: User {0} is offline", userID);
|
m_log.DebugFormat("[GRID USER SERVICE]: User {0} is offline", userID);
|
||||||
GridUserData d = m_Database.Get(userID);
|
|
||||||
|
GridUserData d = GetGridUserData(userID);
|
||||||
|
|
||||||
if (d == null)
|
if (d == null)
|
||||||
{
|
{
|
||||||
|
@ -211,7 +222,8 @@ namespace OpenSim.Services.UserAccountService
|
||||||
|
|
||||||
public bool SetHome(string userID, UUID homeID, Vector3 homePosition, Vector3 homeLookAt)
|
public bool SetHome(string userID, UUID homeID, Vector3 homePosition, Vector3 homeLookAt)
|
||||||
{
|
{
|
||||||
GridUserData d = m_Database.Get(userID);
|
GridUserData d = GetGridUserData(userID);
|
||||||
|
|
||||||
if (d == null)
|
if (d == null)
|
||||||
{
|
{
|
||||||
d = new GridUserData();
|
d = new GridUserData();
|
||||||
|
@ -229,7 +241,8 @@ namespace OpenSim.Services.UserAccountService
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[GRID USER SERVICE]: SetLastPosition for {0}", userID);
|
// m_log.DebugFormat("[GRID USER SERVICE]: SetLastPosition for {0}", userID);
|
||||||
|
|
||||||
GridUserData d = m_Database.Get(userID);
|
GridUserData d = GetGridUserData(userID);
|
||||||
|
|
||||||
if (d == null)
|
if (d == null)
|
||||||
{
|
{
|
||||||
d = new GridUserData();
|
d = new GridUserData();
|
||||||
|
@ -243,4 +256,4 @@ namespace OpenSim.Services.UserAccountService
|
||||||
return m_Database.Store(d);
|
return m_Database.Store(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue