From 733a07e061cdcb6095677758a264ba976bb94b93 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Thu, 6 May 2010 00:34:49 +0200
Subject: Plumb the viewer version string through into AgentCircuitData. Now
all that is left os to figure out what black magic turns AgentCircuitData
into AgentData and then copy that into the ScenePresence, where m_Viewer is
already added with this commit and waits for the data.
---
OpenSim/Framework/AgentCircuitData.cs | 11 +++++++++++
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 6 ++++++
OpenSim/Server/Handlers/Login/LLLoginHandlers.cs | 4 ++--
OpenSim/Services/Interfaces/ILoginService.cs | 2 +-
OpenSim/Services/LLLoginService/LLLoginService.cs | 13 +++++++------
5 files changed, 27 insertions(+), 9 deletions(-)
(limited to 'OpenSim')
diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs
index 353e5bf..783a833 100644
--- a/OpenSim/Framework/AgentCircuitData.cs
+++ b/OpenSim/Framework/AgentCircuitData.cs
@@ -108,6 +108,11 @@ namespace OpenSim.Framework
public string ServiceSessionID = string.Empty;
///
+ /// Viewer's version string
+ ///
+ public string Viewer;
+
+ ///
/// Position the Agent's Avatar starts in the region
///
public Vector3 startpos;
@@ -136,6 +141,7 @@ namespace OpenSim.Framework
BaseFolder = new UUID(cAgent.BaseFolder);
CapsPath = cAgent.CapsPath;
ChildrenCapSeeds = cAgent.ChildrenCapSeeds;
+ Viewer = cAgent.Viewer;
}
///
@@ -173,6 +179,7 @@ namespace OpenSim.Framework
args["service_session_id"] = OSD.FromString(ServiceSessionID);
args["start_pos"] = OSD.FromString(startpos.ToString());
args["appearance_serial"] = OSD.FromInteger(Appearance.Serial);
+ args["viewer"] = OSD.FromString(Viewer);
if (Appearance != null)
{
@@ -272,6 +279,8 @@ namespace OpenSim.Framework
SessionID = args["session_id"].AsUUID();
if (args["service_session_id"] != null)
ServiceSessionID = args["service_session_id"].AsString();
+ if (args["viewer"] != null)
+ Viewer = args["viewer"].AsString();
if (args["start_pos"] != null)
Vector3.TryParse(args["start_pos"].AsString(), out startpos);
@@ -339,6 +348,7 @@ namespace OpenSim.Framework
public float startposx;
public float startposy;
public float startposz;
+ public string Viewer;
public sAgentCircuitData()
{
@@ -360,6 +370,7 @@ namespace OpenSim.Framework
BaseFolder = cAgent.BaseFolder.Guid;
CapsPath = cAgent.CapsPath;
ChildrenCapSeeds = cAgent.ChildrenCapSeeds;
+ Viewer = cAgent.Viewer;
}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 562232c..987180b 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -227,6 +227,7 @@ namespace OpenSim.Region.Framework.Scenes
private int m_lastColCount = -1; //KF: Look for Collision chnages
private int m_updateCount = 0; //KF: Update Anims for a while
private static readonly int UPDATE_COUNT = 10; // how many frames to update for
+ private string m_Viewer = String.Empty;
private const int NumMovementsBetweenRayCast = 5;
@@ -664,6 +665,11 @@ namespace OpenSim.Region.Framework.Scenes
set { m_flyDisabled = value; }
}
+ public string Viewer
+ {
+ get { return m_Viewer; }
+ }
+
#endregion
#region Constructor(s)
diff --git a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
index 83b3e31..c9bf996 100644
--- a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
+++ b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
@@ -86,7 +86,7 @@ namespace OpenSim.Server.Handlers.Login
m_log.InfoFormat("[LOGIN]: XMLRPC Login Requested for {0} {1}, starting in {2}, using {3}", first, last, startLocation, clientVersion);
LoginResponse reply = null;
- reply = m_LocalService.Login(first, last, passwd, startLocation, scopeID, remoteClient);
+ reply = m_LocalService.Login(first, last, passwd, startLocation, scopeID, clientVersion, remoteClient);
XmlRpcResponse response = new XmlRpcResponse();
response.Value = reply.ToHashtable();
@@ -157,7 +157,7 @@ namespace OpenSim.Server.Handlers.Login
m_log.Info("[LOGIN]: LLSD Login Requested for: '" + map["first"].AsString() + "' '" + map["last"].AsString() + "' / " + startLocation);
LoginResponse reply = null;
- reply = m_LocalService.Login(map["first"].AsString(), map["last"].AsString(), map["passwd"].AsString(), startLocation, scopeID, remoteClient);
+ reply = m_LocalService.Login(map["first"].AsString(), map["last"].AsString(), map["passwd"].AsString(), startLocation, scopeID, String.Empty, remoteClient);
return reply.ToOSDMap();
}
diff --git a/OpenSim/Services/Interfaces/ILoginService.cs b/OpenSim/Services/Interfaces/ILoginService.cs
index 513ab4a..9e57339 100644
--- a/OpenSim/Services/Interfaces/ILoginService.cs
+++ b/OpenSim/Services/Interfaces/ILoginService.cs
@@ -47,7 +47,7 @@ namespace OpenSim.Services.Interfaces
public interface ILoginService
{
- LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, IPEndPoint clientIP);
+ LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, string clientVersion, IPEndPoint clientIP);
Hashtable SetLevel(string firstName, string lastName, string passwd, int level, IPEndPoint clientIP);
}
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs
index 5b950e0..9efdd11 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -200,7 +200,7 @@ namespace OpenSim.Services.LLLoginService
return response;
}
- public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, IPEndPoint clientIP)
+ public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, string clientVersion, IPEndPoint clientIP)
{
bool success = false;
UUID session = UUID.Random();
@@ -326,7 +326,7 @@ namespace OpenSim.Services.LLLoginService
// Instantiate/get the simulation interface and launch an agent at the destination
//
string reason = string.Empty;
- AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, out where, out reason);
+ AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, clientVersion, out where, out reason);
if (aCircuit == null)
{
@@ -592,7 +592,7 @@ namespace OpenSim.Services.LLLoginService
}
protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarData avatar,
- UUID session, UUID secureSession, Vector3 position, string currentWhere, out string where, out string reason)
+ UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, out string where, out string reason)
{
where = currentWhere;
ISimulationService simConnector = null;
@@ -632,7 +632,7 @@ namespace OpenSim.Services.LLLoginService
if (m_UserAgentService == null && simConnector != null)
{
circuitCode = (uint)Util.RandomClass.Next(); ;
- aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position);
+ aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, viewer);
success = LaunchAgentDirectly(simConnector, destination, aCircuit, out reason);
if (!success && m_GridService != null)
{
@@ -657,7 +657,7 @@ namespace OpenSim.Services.LLLoginService
if (m_UserAgentService != null)
{
circuitCode = (uint)Util.RandomClass.Next(); ;
- aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position);
+ aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, viewer);
success = LaunchAgentIndirectly(gatekeeper, destination, aCircuit, out reason);
if (!success && m_GridService != null)
{
@@ -686,7 +686,7 @@ namespace OpenSim.Services.LLLoginService
}
private AgentCircuitData MakeAgent(GridRegion region, UserAccount account,
- AvatarData avatar, UUID session, UUID secureSession, uint circuit, Vector3 position)
+ AvatarData avatar, UUID session, UUID secureSession, uint circuit, Vector3 position, string viewer)
{
AgentCircuitData aCircuit = new AgentCircuitData();
@@ -707,6 +707,7 @@ namespace OpenSim.Services.LLLoginService
aCircuit.SecureSessionID = secureSession;
aCircuit.SessionID = session;
aCircuit.startpos = position;
+ aCircuit.Viewer = viewer;
SetServiceURLs(aCircuit, account);
return aCircuit;
--
cgit v1.1