diff options
8 files changed, 97 insertions, 20 deletions
diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 783a833..4f89d78 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs | |||
@@ -108,11 +108,31 @@ namespace OpenSim.Framework | |||
108 | public string ServiceSessionID = string.Empty; | 108 | public string ServiceSessionID = string.Empty; |
109 | 109 | ||
110 | /// <summary> | 110 | /// <summary> |
111 | /// Viewer's version string | 111 | /// The client's IP address, as captured by the login service |
112 | /// </summary> | ||
113 | public string IPAddress; | ||
114 | |||
115 | /// <summary> | ||
116 | /// Viewer's version string as reported by the viewer at login | ||
112 | /// </summary> | 117 | /// </summary> |
113 | public string Viewer; | 118 | public string Viewer; |
114 | 119 | ||
115 | /// <summary> | 120 | /// <summary> |
121 | /// The channel strinf sent by the viewer at login | ||
122 | /// </summary> | ||
123 | public string Channel; | ||
124 | |||
125 | /// <summary> | ||
126 | /// The Mac address as reported by the viewer at login | ||
127 | /// </summary> | ||
128 | public string Mac; | ||
129 | |||
130 | /// <summary> | ||
131 | /// The id0 as reported by the viewer at login | ||
132 | /// </summary> | ||
133 | public string Id0; | ||
134 | |||
135 | /// <summary> | ||
116 | /// Position the Agent's Avatar starts in the region | 136 | /// Position the Agent's Avatar starts in the region |
117 | /// </summary> | 137 | /// </summary> |
118 | public Vector3 startpos; | 138 | public Vector3 startpos; |
@@ -179,7 +199,11 @@ namespace OpenSim.Framework | |||
179 | args["service_session_id"] = OSD.FromString(ServiceSessionID); | 199 | args["service_session_id"] = OSD.FromString(ServiceSessionID); |
180 | args["start_pos"] = OSD.FromString(startpos.ToString()); | 200 | args["start_pos"] = OSD.FromString(startpos.ToString()); |
181 | args["appearance_serial"] = OSD.FromInteger(Appearance.Serial); | 201 | args["appearance_serial"] = OSD.FromInteger(Appearance.Serial); |
202 | args["client_ip"] = OSD.FromString(IPAddress); | ||
182 | args["viewer"] = OSD.FromString(Viewer); | 203 | args["viewer"] = OSD.FromString(Viewer); |
204 | args["channel"] = OSD.FromString(Channel); | ||
205 | args["mac"] = OSD.FromString(Mac); | ||
206 | args["id0"] = OSD.FromString(Id0); | ||
183 | 207 | ||
184 | if (Appearance != null) | 208 | if (Appearance != null) |
185 | { | 209 | { |
@@ -279,8 +303,16 @@ namespace OpenSim.Framework | |||
279 | SessionID = args["session_id"].AsUUID(); | 303 | SessionID = args["session_id"].AsUUID(); |
280 | if (args["service_session_id"] != null) | 304 | if (args["service_session_id"] != null) |
281 | ServiceSessionID = args["service_session_id"].AsString(); | 305 | ServiceSessionID = args["service_session_id"].AsString(); |
306 | if (args["client_ip"] != null) | ||
307 | IPAddress = args["client_ip"].AsString(); | ||
282 | if (args["viewer"] != null) | 308 | if (args["viewer"] != null) |
283 | Viewer = args["viewer"].AsString(); | 309 | Viewer = args["viewer"].AsString(); |
310 | if (args["channel"] != null) | ||
311 | Channel = args["channel"].AsString(); | ||
312 | if (args["mac"] != null) | ||
313 | Mac = args["mac"].AsString(); | ||
314 | if (args["id0"] != null) | ||
315 | Id0 = args["id0"].AsString(); | ||
284 | 316 | ||
285 | if (args["start_pos"] != null) | 317 | if (args["start_pos"] != null) |
286 | Vector3.TryParse(args["start_pos"].AsString(), out startpos); | 318 | Vector3.TryParse(args["start_pos"].AsString(), out startpos); |
@@ -349,6 +381,9 @@ namespace OpenSim.Framework | |||
349 | public float startposy; | 381 | public float startposy; |
350 | public float startposz; | 382 | public float startposz; |
351 | public string Viewer; | 383 | public string Viewer; |
384 | public string Channel; | ||
385 | public string Mac; | ||
386 | public string Id0; | ||
352 | 387 | ||
353 | public sAgentCircuitData() | 388 | public sAgentCircuitData() |
354 | { | 389 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 81f49b6..38fff1c 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -301,7 +301,11 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
301 | if (currentAgentCircuit != null) | 301 | if (currentAgentCircuit != null) |
302 | { | 302 | { |
303 | agentCircuit.ServiceURLs = currentAgentCircuit.ServiceURLs; | 303 | agentCircuit.ServiceURLs = currentAgentCircuit.ServiceURLs; |
304 | agentCircuit.IPAddress = currentAgentCircuit.IPAddress; | ||
304 | agentCircuit.Viewer = currentAgentCircuit.Viewer; | 305 | agentCircuit.Viewer = currentAgentCircuit.Viewer; |
306 | agentCircuit.Channel = currentAgentCircuit.Channel; | ||
307 | agentCircuit.Mac = currentAgentCircuit.Mac; | ||
308 | agentCircuit.Id0 = currentAgentCircuit.Id0; | ||
305 | } | 309 | } |
306 | 310 | ||
307 | if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) | 311 | if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) |
@@ -955,16 +959,16 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
955 | agent.CapsPath = CapsUtil.GetRandomCapsObjectPath(); | 959 | agent.CapsPath = CapsUtil.GetRandomCapsObjectPath(); |
956 | 960 | ||
957 | agent.ChildrenCapSeeds = new Dictionary<ulong, string>(sp.Scene.CapsModule.GetChildrenSeeds(sp.UUID)); | 961 | agent.ChildrenCapSeeds = new Dictionary<ulong, string>(sp.Scene.CapsModule.GetChildrenSeeds(sp.UUID)); |
958 | m_log.DebugFormat("[XXX] Seeds 1 {0}", agent.ChildrenCapSeeds.Count); | 962 | //m_log.DebugFormat("[XXX] Seeds 1 {0}", agent.ChildrenCapSeeds.Count); |
959 | 963 | ||
960 | if (!agent.ChildrenCapSeeds.ContainsKey(sp.Scene.RegionInfo.RegionHandle)) | 964 | if (!agent.ChildrenCapSeeds.ContainsKey(sp.Scene.RegionInfo.RegionHandle)) |
961 | agent.ChildrenCapSeeds.Add(sp.Scene.RegionInfo.RegionHandle, sp.ControllingClient.RequestClientInfo().CapsPath); | 965 | agent.ChildrenCapSeeds.Add(sp.Scene.RegionInfo.RegionHandle, sp.ControllingClient.RequestClientInfo().CapsPath); |
962 | m_log.DebugFormat("[XXX] Seeds 2 {0}", agent.ChildrenCapSeeds.Count); | 966 | //m_log.DebugFormat("[XXX] Seeds 2 {0}", agent.ChildrenCapSeeds.Count); |
963 | 967 | ||
964 | sp.AddNeighbourRegion(region.RegionHandle, agent.CapsPath); | 968 | sp.AddNeighbourRegion(region.RegionHandle, agent.CapsPath); |
965 | foreach (ulong h in agent.ChildrenCapSeeds.Keys) | 969 | //foreach (ulong h in agent.ChildrenCapSeeds.Keys) |
966 | m_log.DebugFormat("[XXX] --> {0}", h); | 970 | // m_log.DebugFormat("[XXX] --> {0}", h); |
967 | m_log.DebugFormat("[XXX] Adding {0}", region.RegionHandle); | 971 | //m_log.DebugFormat("[XXX] Adding {0}", region.RegionHandle); |
968 | agent.ChildrenCapSeeds.Add(region.RegionHandle, agent.CapsPath); | 972 | agent.ChildrenCapSeeds.Add(region.RegionHandle, agent.CapsPath); |
969 | 973 | ||
970 | if (sp.Scene.CapsModule != null) | 974 | if (sp.Scene.CapsModule != null) |
@@ -975,7 +979,11 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
975 | if (currentAgentCircuit != null) | 979 | if (currentAgentCircuit != null) |
976 | { | 980 | { |
977 | agent.ServiceURLs = currentAgentCircuit.ServiceURLs; | 981 | agent.ServiceURLs = currentAgentCircuit.ServiceURLs; |
982 | agent.IPAddress = currentAgentCircuit.IPAddress; | ||
978 | agent.Viewer = currentAgentCircuit.Viewer; | 983 | agent.Viewer = currentAgentCircuit.Viewer; |
984 | agent.Channel = currentAgentCircuit.Channel; | ||
985 | agent.Mac = currentAgentCircuit.Mac; | ||
986 | agent.Id0 = currentAgentCircuit.Id0; | ||
979 | } | 987 | } |
980 | 988 | ||
981 | InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync; | 989 | InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync; |
@@ -1064,7 +1072,11 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1064 | if (currentAgentCircuit != null) | 1072 | if (currentAgentCircuit != null) |
1065 | { | 1073 | { |
1066 | agent.ServiceURLs = currentAgentCircuit.ServiceURLs; | 1074 | agent.ServiceURLs = currentAgentCircuit.ServiceURLs; |
1075 | agent.IPAddress = currentAgentCircuit.IPAddress; | ||
1067 | agent.Viewer = currentAgentCircuit.Viewer; | 1076 | agent.Viewer = currentAgentCircuit.Viewer; |
1077 | agent.Channel = currentAgentCircuit.Channel; | ||
1078 | agent.Mac = currentAgentCircuit.Mac; | ||
1079 | agent.Id0 = currentAgentCircuit.Id0; | ||
1068 | } | 1080 | } |
1069 | 1081 | ||
1070 | if (newRegions.Contains(neighbour.RegionHandle)) | 1082 | if (newRegions.Contains(neighbour.RegionHandle)) |
diff --git a/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs index d10d6fc..21f4f3d 100644 --- a/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs +++ b/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs | |||
@@ -157,7 +157,7 @@ namespace OpenSim.Server.Handlers.Hypergrid | |||
157 | // Verify if this caller has authority to send the client IP | 157 | // Verify if this caller has authority to send the client IP |
158 | if (callerIP == m_LoginServerIP) | 158 | if (callerIP == m_LoginServerIP) |
159 | client_ipaddress = new IPEndPoint(IPAddress.Parse(ip_str), 0); | 159 | client_ipaddress = new IPEndPoint(IPAddress.Parse(ip_str), 0); |
160 | else | 160 | else // leaving this for now, but this warning should be removed |
161 | m_log.WarnFormat("[HOME AGENT HANDLER]: Unauthorized machine {0} tried to set client ip to {1}", callerIP, ip_str); | 161 | m_log.WarnFormat("[HOME AGENT HANDLER]: Unauthorized machine {0} tried to set client ip to {1}", callerIP, ip_str); |
162 | } | 162 | } |
163 | catch | 163 | catch |
diff --git a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs index 30dc65e..48f5f99 100644 --- a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs +++ b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs | |||
@@ -88,14 +88,26 @@ namespace OpenSim.Server.Handlers.Login | |||
88 | startLocation = requestData["start"].ToString(); | 88 | startLocation = requestData["start"].ToString(); |
89 | 89 | ||
90 | string clientVersion = "Unknown"; | 90 | string clientVersion = "Unknown"; |
91 | if (requestData.Contains("version")) | 91 | if (requestData.Contains("version") && requestData["version"] != null) |
92 | clientVersion = requestData["version"].ToString(); | 92 | clientVersion = requestData["version"].ToString(); |
93 | // We should do something interesting with the client version... | 93 | // We should do something interesting with the client version... |
94 | 94 | ||
95 | string channel = "Unknown"; | ||
96 | if (requestData.Contains("channel") && requestData["channel"] != null) | ||
97 | channel = requestData["channel"].ToString(); | ||
98 | |||
99 | string mac = "Unknown"; | ||
100 | if (requestData.Contains("mac") && requestData["mac"] != null) | ||
101 | mac = requestData["mac"].ToString(); | ||
102 | |||
103 | string id0 = "Unknown"; | ||
104 | if (requestData.Contains("id0") && requestData["id0"] != null) | ||
105 | id0 = requestData["id0"].ToString(); | ||
106 | |||
95 | //m_log.InfoFormat("[LOGIN]: XMLRPC Login Requested for {0} {1}, starting in {2}, using {3}", first, last, startLocation, clientVersion); | 107 | //m_log.InfoFormat("[LOGIN]: XMLRPC Login Requested for {0} {1}, starting in {2}, using {3}", first, last, startLocation, clientVersion); |
96 | 108 | ||
97 | LoginResponse reply = null; | 109 | LoginResponse reply = null; |
98 | reply = m_LocalService.Login(first, last, passwd, startLocation, scopeID, clientVersion, remoteClient); | 110 | reply = m_LocalService.Login(first, last, passwd, startLocation, scopeID, clientVersion, channel, mac, id0, remoteClient); |
99 | 111 | ||
100 | XmlRpcResponse response = new XmlRpcResponse(); | 112 | XmlRpcResponse response = new XmlRpcResponse(); |
101 | response.Value = reply.ToHashtable(); | 113 | response.Value = reply.ToHashtable(); |
@@ -166,7 +178,8 @@ namespace OpenSim.Server.Handlers.Login | |||
166 | m_log.Info("[LOGIN]: LLSD Login Requested for: '" + map["first"].AsString() + "' '" + map["last"].AsString() + "' / " + startLocation); | 178 | m_log.Info("[LOGIN]: LLSD Login Requested for: '" + map["first"].AsString() + "' '" + map["last"].AsString() + "' / " + startLocation); |
167 | 179 | ||
168 | LoginResponse reply = null; | 180 | LoginResponse reply = null; |
169 | reply = m_LocalService.Login(map["first"].AsString(), map["last"].AsString(), map["passwd"].AsString(), startLocation, scopeID, String.Empty, remoteClient); | 181 | reply = m_LocalService.Login(map["first"].AsString(), map["last"].AsString(), map["passwd"].AsString(), startLocation, scopeID, |
182 | map["version"].AsString(), map["channel"].AsString(), map["mac"].AsString(), map["id0"].AsString(), remoteClient); | ||
170 | return reply.ToOSDMap(); | 183 | return reply.ToOSDMap(); |
171 | 184 | ||
172 | } | 185 | } |
diff --git a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs index 6d3c64a..247dd7e 100644 --- a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs +++ b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs | |||
@@ -238,8 +238,12 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
238 | args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString()); | 238 | args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString()); |
239 | args["destination_name"] = OSD.FromString(destination.RegionName); | 239 | args["destination_name"] = OSD.FromString(destination.RegionName); |
240 | args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); | 240 | args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); |
241 | if (ipaddress != null) | 241 | |
242 | args["client_ip"] = OSD.FromString(ipaddress.Address.ToString()); | 242 | // 10/3/2010 |
243 | // I added the client_ip up to the regular AgentCircuitData, so this doesn't need to be here. | ||
244 | // This need cleaning elsewhere... | ||
245 | //if (ipaddress != null) | ||
246 | // args["client_ip"] = OSD.FromString(ipaddress.Address.ToString()); | ||
243 | 247 | ||
244 | return args; | 248 | return args; |
245 | } | 249 | } |
diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index 8acd618..eb6433c 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs | |||
@@ -148,7 +148,6 @@ namespace OpenSim.Services.HypergridService | |||
148 | agentCircuit.ServiceSessionID = "http://" + region.ExternalHostName + ":" + region.HttpPort + ";" + UUID.Random(); | 148 | agentCircuit.ServiceSessionID = "http://" + region.ExternalHostName + ":" + region.HttpPort + ";" + UUID.Random(); |
149 | TravelingAgentInfo old = UpdateTravelInfo(agentCircuit, region); | 149 | TravelingAgentInfo old = UpdateTravelInfo(agentCircuit, region); |
150 | 150 | ||
151 | //bool success = m_GatekeeperConnector.CreateAgent(region, agentCircuit, (uint)Constants.TeleportFlags.ViaLogin, out reason); | ||
152 | bool success = false; | 151 | bool success = false; |
153 | string myExternalIP = string.Empty; | 152 | string myExternalIP = string.Empty; |
154 | string gridName = "http://" + gatekeeper.ExternalHostName + ":" + gatekeeper.HttpPort; | 153 | string gridName = "http://" + gatekeeper.ExternalHostName + ":" + gatekeeper.HttpPort; |
@@ -200,6 +199,11 @@ namespace OpenSim.Services.HypergridService | |||
200 | { | 199 | { |
201 | if (m_TravelingAgents.ContainsKey(agentCircuit.SessionID)) | 200 | if (m_TravelingAgents.ContainsKey(agentCircuit.SessionID)) |
202 | { | 201 | { |
202 | // Very important! Override whatever this agent comes with. | ||
203 | // UserAgentService always sets the IP for every new agent | ||
204 | // with the original IP address. | ||
205 | agentCircuit.IPAddress = m_TravelingAgents[agentCircuit.SessionID].ClientIPAddress; | ||
206 | |||
203 | old = m_TravelingAgents[agentCircuit.SessionID]; | 207 | old = m_TravelingAgents[agentCircuit.SessionID]; |
204 | } | 208 | } |
205 | 209 | ||
diff --git a/OpenSim/Services/Interfaces/ILoginService.cs b/OpenSim/Services/Interfaces/ILoginService.cs index 9e57339..ee9b0b1 100644 --- a/OpenSim/Services/Interfaces/ILoginService.cs +++ b/OpenSim/Services/Interfaces/ILoginService.cs | |||
@@ -47,7 +47,8 @@ namespace OpenSim.Services.Interfaces | |||
47 | 47 | ||
48 | public interface ILoginService | 48 | public interface ILoginService |
49 | { | 49 | { |
50 | LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, string clientVersion, IPEndPoint clientIP); | 50 | LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, |
51 | string clientVersion, string channel, string mac, string id0, IPEndPoint clientIP); | ||
51 | Hashtable SetLevel(string firstName, string lastName, string passwd, int level, IPEndPoint clientIP); | 52 | Hashtable SetLevel(string firstName, string lastName, string passwd, int level, IPEndPoint clientIP); |
52 | } | 53 | } |
53 | 54 | ||
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index d30c149..127c4b2 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs | |||
@@ -208,7 +208,8 @@ namespace OpenSim.Services.LLLoginService | |||
208 | return response; | 208 | return response; |
209 | } | 209 | } |
210 | 210 | ||
211 | public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, string clientVersion, IPEndPoint clientIP) | 211 | public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, |
212 | string clientVersion, string channel, string mac, string id0, IPEndPoint clientIP) | ||
212 | { | 213 | { |
213 | bool success = false; | 214 | bool success = false; |
214 | UUID session = UUID.Random(); | 215 | UUID session = UUID.Random(); |
@@ -340,7 +341,8 @@ namespace OpenSim.Services.LLLoginService | |||
340 | // | 341 | // |
341 | string reason = string.Empty; | 342 | string reason = string.Empty; |
342 | GridRegion dest; | 343 | GridRegion dest; |
343 | AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, clientVersion, clientIP, out where, out reason, out dest); | 344 | AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, |
345 | clientVersion, channel, mac, id0, clientIP, out where, out reason, out dest); | ||
344 | destination = dest; | 346 | destination = dest; |
345 | if (aCircuit == null) | 347 | if (aCircuit == null) |
346 | { | 348 | { |
@@ -600,7 +602,8 @@ namespace OpenSim.Services.LLLoginService | |||
600 | } | 602 | } |
601 | 603 | ||
602 | protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarData avatar, | 604 | protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarData avatar, |
603 | UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, IPEndPoint clientIP, out string where, out string reason, out GridRegion dest) | 605 | UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, string channel, string mac, string id0, |
606 | IPEndPoint clientIP, out string where, out string reason, out GridRegion dest) | ||
604 | { | 607 | { |
605 | where = currentWhere; | 608 | where = currentWhere; |
606 | ISimulationService simConnector = null; | 609 | ISimulationService simConnector = null; |
@@ -640,7 +643,7 @@ namespace OpenSim.Services.LLLoginService | |||
640 | if (m_UserAgentService == null && simConnector != null) | 643 | if (m_UserAgentService == null && simConnector != null) |
641 | { | 644 | { |
642 | circuitCode = (uint)Util.RandomClass.Next(); ; | 645 | circuitCode = (uint)Util.RandomClass.Next(); ; |
643 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, viewer); | 646 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, clientIP.Address.ToString(), viewer, channel, mac, id0); |
644 | success = LaunchAgentDirectly(simConnector, destination, aCircuit, out reason); | 647 | success = LaunchAgentDirectly(simConnector, destination, aCircuit, out reason); |
645 | if (!success && m_GridService != null) | 648 | if (!success && m_GridService != null) |
646 | { | 649 | { |
@@ -665,7 +668,7 @@ namespace OpenSim.Services.LLLoginService | |||
665 | if (m_UserAgentService != null) | 668 | if (m_UserAgentService != null) |
666 | { | 669 | { |
667 | circuitCode = (uint)Util.RandomClass.Next(); ; | 670 | circuitCode = (uint)Util.RandomClass.Next(); ; |
668 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, viewer); | 671 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, clientIP.Address.ToString(), viewer, channel, mac, id0); |
669 | success = LaunchAgentIndirectly(gatekeeper, destination, aCircuit, clientIP, out reason); | 672 | success = LaunchAgentIndirectly(gatekeeper, destination, aCircuit, clientIP, out reason); |
670 | if (!success && m_GridService != null) | 673 | if (!success && m_GridService != null) |
671 | { | 674 | { |
@@ -694,7 +697,8 @@ namespace OpenSim.Services.LLLoginService | |||
694 | } | 697 | } |
695 | 698 | ||
696 | private AgentCircuitData MakeAgent(GridRegion region, UserAccount account, | 699 | private AgentCircuitData MakeAgent(GridRegion region, UserAccount account, |
697 | AvatarData avatar, UUID session, UUID secureSession, uint circuit, Vector3 position, string viewer) | 700 | AvatarData avatar, UUID session, UUID secureSession, uint circuit, Vector3 position, |
701 | string ipaddress, string viewer, string channel, string mac, string id0) | ||
698 | { | 702 | { |
699 | AgentCircuitData aCircuit = new AgentCircuitData(); | 703 | AgentCircuitData aCircuit = new AgentCircuitData(); |
700 | 704 | ||
@@ -715,7 +719,11 @@ namespace OpenSim.Services.LLLoginService | |||
715 | aCircuit.SecureSessionID = secureSession; | 719 | aCircuit.SecureSessionID = secureSession; |
716 | aCircuit.SessionID = session; | 720 | aCircuit.SessionID = session; |
717 | aCircuit.startpos = position; | 721 | aCircuit.startpos = position; |
722 | aCircuit.IPAddress = ipaddress; | ||
718 | aCircuit.Viewer = viewer; | 723 | aCircuit.Viewer = viewer; |
724 | aCircuit.Channel = channel; | ||
725 | aCircuit.Mac = mac; | ||
726 | aCircuit.Id0 = id0; | ||
719 | SetServiceURLs(aCircuit, account); | 727 | SetServiceURLs(aCircuit, account); |
720 | 728 | ||
721 | return aCircuit; | 729 | return aCircuit; |