Merge branch 'master' into careminster-presence-refactor

avinationmerge
Melanie 2010-05-16 17:22:38 +01:00
commit d8bf370fd6
4 changed files with 39 additions and 26 deletions

View File

@ -3383,7 +3383,6 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public void RegisterCommsEvents() public void RegisterCommsEvents()
{ {
m_sceneGridService.OnExpectUser += HandleNewUserConnection;
m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing; m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing;
m_sceneGridService.OnCloseAgentConnection += IncomingCloseAgent; m_sceneGridService.OnCloseAgentConnection += IncomingCloseAgent;
//m_eventManager.OnRegionUp += OtherRegionUp; //m_eventManager.OnRegionUp += OtherRegionUp;
@ -3404,7 +3403,6 @@ namespace OpenSim.Region.Framework.Scenes
//m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; //m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar;
//m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; //m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate;
//m_eventManager.OnRegionUp -= OtherRegionUp; //m_eventManager.OnRegionUp -= OtherRegionUp;
m_sceneGridService.OnExpectUser -= HandleNewUserConnection;
m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing; m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing;
m_sceneGridService.OnCloseAgentConnection -= IncomingCloseAgent; m_sceneGridService.OnCloseAgentConnection -= IncomingCloseAgent;
m_sceneGridService.OnGetLandData -= GetLandData; m_sceneGridService.OnGetLandData -= GetLandData;
@ -3416,22 +3414,6 @@ namespace OpenSim.Region.Framework.Scenes
m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", m_regInfo.RegionName); m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", m_regInfo.RegionName);
} }
/// <summary>
/// A handler for the SceneCommunicationService event, to match that events return type of void.
/// Use NewUserConnection() directly if possible so the return type can refuse connections.
/// At the moment nothing actually seems to use this event,
/// as everything is switching to calling the NewUserConnection method directly.
///
/// Now obsoleting this because it doesn't handle teleportFlags propertly
///
/// </summary>
/// <param name="agent"></param>
[Obsolete("Please call NewUserConnection directly.")]
public void HandleNewUserConnection(AgentCircuitData agent)
{
string reason;
NewUserConnection(agent, 0, out reason);
}
/// <summary> /// <summary>
/// Do the work necessary to initiate a new user connection for a particular scene. /// Do the work necessary to initiate a new user connection for a particular scene.
@ -3492,6 +3474,8 @@ namespace OpenSim.Region.Framework.Scenes
ScenePresence sp = GetScenePresence(agent.AgentID); ScenePresence sp = GetScenePresence(agent.AgentID);
if (sp != null) if (sp != null)
{
if (sp.IsChildAgent)
{ {
m_log.DebugFormat( m_log.DebugFormat(
"[SCENE]: Adjusting known seeds for existing agent {0} in {1}", "[SCENE]: Adjusting known seeds for existing agent {0} in {1}",
@ -3501,6 +3485,13 @@ namespace OpenSim.Region.Framework.Scenes
return true; return true;
} }
else
{
// We have a zombie from a crashed session. Kill it.
m_log.DebugFormat("[SCENE]: Zombie scene presence detected for {0} in {1}", agent.AgentID, RegionInfo.RegionName);
sp.ControllingClient.Close();
}
}
CapsModule.AddCapsHandler(agent.AgentID); CapsModule.AddCapsHandler(agent.AgentID);

View File

@ -386,7 +386,7 @@ namespace OpenSim.Services.InventoryService
XInventoryItem[] items = m_Database.GetActiveGestures(principalID); XInventoryItem[] items = m_Database.GetActiveGestures(principalID);
if (items.Length == 0) if (items.Length == 0)
return null; return new List<InventoryItemBase>();
List<InventoryItemBase> ret = new List<InventoryItemBase>(); List<InventoryItemBase> ret = new List<InventoryItemBase>();

View File

@ -222,12 +222,14 @@ namespace OpenSim.Services.LLLoginService
public LLLoginResponse(UserAccount account, AgentCircuitData aCircuit, GridUserInfo pinfo, public LLLoginResponse(UserAccount account, AgentCircuitData aCircuit, GridUserInfo pinfo,
GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService, GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService,
string where, string startlocation, Vector3 position, Vector3 lookAt, string message, string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message,
GridRegion home, IPEndPoint clientIP) GridRegion home, IPEndPoint clientIP)
: this() : this()
{ {
FillOutInventoryData(invSkel, libService); FillOutInventoryData(invSkel, libService);
FillOutActiveGestures(gestures);
CircuitCode = (int)aCircuit.circuitcode; CircuitCode = (int)aCircuit.circuitcode;
Lastname = account.LastName; Lastname = account.LastName;
Firstname = account.FirstName; Firstname = account.FirstName;
@ -288,6 +290,22 @@ namespace OpenSim.Services.LLLoginService
} }
} }
private void FillOutActiveGestures(List<InventoryItemBase> gestures)
{
ArrayList list = new ArrayList();
if (gestures != null)
{
foreach (InventoryItemBase gesture in gestures)
{
Hashtable item = new Hashtable();
item["item_id"] = gesture.ID.ToString();
item["asset_id"] = gesture.AssetID.ToString();
list.Add(item);
}
}
ActiveGestures = list;
}
private void FillOutHomeData(GridUserInfo pinfo, GridRegion home) private void FillOutHomeData(GridUserInfo pinfo, GridRegion home)
{ {
int x = 1000 * (int)Constants.RegionSize, y = 1000 * (int)Constants.RegionSize; int x = 1000 * (int)Constants.RegionSize, y = 1000 * (int)Constants.RegionSize;

View File

@ -278,6 +278,10 @@ namespace OpenSim.Services.LLLoginService
return LLFailedLoginResponse.InventoryProblem; return LLFailedLoginResponse.InventoryProblem;
} }
// Get active gestures
List<InventoryItemBase> gestures = m_InventoryService.GetActiveGestures(account.PrincipalID);
m_log.DebugFormat("[LLOGIN SERVICE]: {0} active gestures", gestures.Count);
// //
// Login the presence // Login the presence
// //
@ -356,7 +360,7 @@ namespace OpenSim.Services.LLLoginService
// Finally, fill out the response and return it // Finally, fill out the response and return it
// //
LLLoginResponse response = new LLLoginResponse(account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService, LLLoginResponse response = new LLLoginResponse(account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService,
where, startLocation, position, lookAt, m_WelcomeMessage, home, clientIP); where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP);
m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to client."); m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to client.");
return response; return response;