diff --git a/Programs/Simian/Extensions/LindenLogin.cs b/Programs/Simian/Extensions/LindenLogin.cs index 874f81f3..21b0fe07 100644 --- a/Programs/Simian/Extensions/LindenLogin.cs +++ b/Programs/Simian/Extensions/LindenLogin.cs @@ -206,15 +206,6 @@ namespace Simian // Assign a circuit code and track the agent as an unassociated agent (no UDP connection yet) agent.CircuitCode = scene.UDP.CreateCircuit(agent); - // Get the IP address of the sim (IPAndPort may be storing IPAdress.Any, aka 0.0.0.0) - IPAddress simIP = scene.IPAndPort.Address; - if (simIP == IPAddress.Any) - { - // Get this machine's IP address - IPHostEntry entry = Dns.GetHostEntry(server.HttpUri.DnsSafeHost); - simIP = entry.AddressList.Length > 0 ? entry.AddressList[entry.AddressList.Length - 1] : IPAddress.Loopback; - } - response.AgentID = agent.ID; response.SecureSessionID = agent.SecureSessionID; response.SessionID = agent.SessionID; @@ -240,7 +231,7 @@ namespace Simian response.SecondsSinceEpoch = DateTime.Now; response.SeedCapability = agent.SeedCapability.ToString(); - response.SimIP = simIP; + response.SimIP = scene.IPAndPort.Address; response.SimPort = (ushort)scene.IPAndPort.Port; response.StartLocation = "last"; // FIXME: response.Success = true; diff --git a/Programs/Simian/Extensions/SceneManager.cs b/Programs/Simian/Extensions/SceneManager.cs index 8e4485d9..95f417fe 100644 --- a/Programs/Simian/Extensions/SceneManager.cs +++ b/Programs/Simian/Extensions/SceneManager.cs @@ -1026,6 +1026,7 @@ namespace Simian UUID agentID = map["agent_id"].AsUUID(); UUID sessionID = map["session_id"].AsUUID(); UUID secureSessionID = map["secure_session_id"].AsUUID(); + uint circuitCode = (uint)map["circuit_code"].AsInteger(); // TODO: Send an identity url and token instead so we can pull down all of the information string firstName = map["first_name"].AsString(); string lastName = map["last_name"].AsString(); @@ -1070,7 +1071,8 @@ namespace Simian enableClientCompleteCallbacks[agentID] = callbackUri; // Assign a circuit code and track the agent as an unassociated agent (no UDP connection yet) - agent.CircuitCode = udp.CreateCircuit(agent); + udp.CreateCircuit(agent, circuitCode); + agent.CircuitCode = circuitCode; osdResponse["success"] = OSD.FromBoolean(true); } @@ -1234,6 +1236,7 @@ namespace Simian map["agent_id"] = OSD.FromUUID(agent.ID); map["session_id"] = OSD.FromUUID(agent.SessionID); map["secure_session_id"] = OSD.FromUUID(agent.SecureSessionID); + map["circuit_code"] = OSD.FromInteger((int)agent.CircuitCode); map["first_name"] = OSD.FromString(agent.Info.FirstName); map["last_name"] = OSD.FromString(agent.Info.LastName); map["callback_uri"] = OSD.FromUri(callbackUri); diff --git a/Programs/Simian/SceneExtensions/UDPManager.cs b/Programs/Simian/SceneExtensions/UDPManager.cs index ad2b911a..2996afaf 100644 --- a/Programs/Simian/SceneExtensions/UDPManager.cs +++ b/Programs/Simian/SceneExtensions/UDPManager.cs @@ -221,7 +221,7 @@ namespace Simian lock (unassociatedAgents) unassociatedAgents[circuitCode] = agent; - Logger.Log("Created circuit " + circuitCode + " for " + agent.FullName, Helpers.LogLevel.Info); + Logger.Log("Created circuit using existing code " + circuitCode + " for " + agent.FullName, Helpers.LogLevel.Info); } public void BroadcastPacket(Packet packet, PacketCategory category) diff --git a/Programs/Simian/Simian.cs b/Programs/Simian/Simian.cs index 08a2e088..ac306192 100644 --- a/Programs/Simian/Simian.cs +++ b/Programs/Simian/Simian.cs @@ -236,6 +236,10 @@ namespace Simian } } + // Make sure 0.0.0.0 gets replaced with a valid IP address + if (endpoint.Address == IPAddress.Any) + endpoint.Address = entry.AddressList.Length > 0 ? entry.AddressList[entry.AddressList.Length - 1] : IPAddress.Loopback; + #endregion IPEndPoint Assignment #region Grid Registration diff --git a/bin/SimianData/grid_message_template.msg b/bin/SimianData/grid_message_template.msg index 99aad306..4dc054fe 100644 --- a/bin/SimianData/grid_message_template.msg +++ b/bin/SimianData/grid_message_template.msg @@ -5,6 +5,7 @@ agent_id: uuid, session_id: uuid, secure_session_id: uuid, + circuit_code: integer, first_name: string, last_name: string, callback_uri: uri