aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs26
1 files changed, 23 insertions, 3 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 92321b6..ceb99ae 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -40,6 +40,9 @@ using OpenSim.Region.Environment.Scenes;
40 40
41namespace OpenSim.Region.ClientStack.LindenUDP 41namespace OpenSim.Region.ClientStack.LindenUDP
42{ 42{
43 /// <summary>
44 /// This class handles the initial UDP circuit setup with a client and passes on subsequent packets to the LLPacketServer
45 /// </summary>
43 public class LLUDPServer : LLClientStackNetworkHandler, IClientNetworkServer 46 public class LLUDPServer : LLClientStackNetworkHandler, IClientNetworkServer
44 { 47 {
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -55,7 +58,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
55 protected byte[] RecvBuffer = new byte[4096]; 58 protected byte[] RecvBuffer = new byte[4096];
56 protected byte[] ZeroBuffer = new byte[8192]; 59 protected byte[] ZeroBuffer = new byte[8192];
57 protected IPEndPoint ipeSender; 60 protected IPEndPoint ipeSender;
61
62 /// <value>
63 /// The endpoint of a sender of a particular packet. The port is continually changed by the various socket receive methods
64 /// </value>
58 protected EndPoint epSender; 65 protected EndPoint epSender;
66
59 protected EndPoint epProxy; 67 protected EndPoint epProxy;
60 protected int proxyPortOffset; 68 protected int proxyPortOffset;
61 protected AsyncCallback ReceivedData; 69 protected AsyncCallback ReceivedData;
@@ -145,6 +153,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
145 new LLPacketServer(this); 153 new LLPacketServer(this);
146 } 154 }
147 155
156 /// <summary>
157 /// This method is called every time that we receive new UDP data. We pass this data on to the LLPacketServer
158 /// except in the case that the packet is UseCircuitCode. In this case we set up the circuit code instead.
159 /// </summary>
160 /// <param name="result"></param>
148 protected virtual void OnReceivedData(IAsyncResult result) 161 protected virtual void OnReceivedData(IAsyncResult result)
149 { 162 {
150 ipeSender = new IPEndPoint(listenIP, 0); 163 ipeSender = new IPEndPoint(listenIP, 0);
@@ -226,10 +239,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
226 { 239 {
227 ret = clientCircuits.TryGetValue(epSender, out circuit); 240 ret = clientCircuits.TryGetValue(epSender, out circuit);
228 } 241 }
242
229 if (ret) 243 if (ret)
230 { 244 {
231 //if so then send packet to the packetserver 245 //if so then send packet to the packetserver
232 //m_log.Warn("[UDPSERVER]: ALREADY HAVE Circuit!"); 246 //m_log.DebugFormat("[UDPSERVER]: For endpoint {0} got packet {1}", epSender, packet.Type);
247
233 m_packetServer.InPacket(circuit, packet); 248 m_packetServer.InPacket(circuit, packet);
234 } 249 }
235 else if (packet.Type == PacketType.UseCircuitCode) 250 else if (packet.Type == PacketType.UseCircuitCode)
@@ -311,6 +326,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
311 } 326 }
312 } 327 }
313 328
329 /// <summary>
330 /// Add a new client circuit.
331 /// </summary>
332 /// <param name="packet"></param>
314 protected virtual void AddNewClient(Packet packet) 333 protected virtual void AddNewClient(Packet packet)
315 { 334 {
316 //Slave regions don't accept new clients 335 //Slave regions don't accept new clients
@@ -325,7 +344,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
325 if (!clientCircuits.ContainsKey(epSender)) 344 if (!clientCircuits.ContainsKey(epSender))
326 clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); 345 clientCircuits.Add(epSender, useCircuit.CircuitCode.Code);
327 else 346 else
328 m_log.Error("[UDPSERVER]: clientCircuits already contans entry for user " + useCircuit.CircuitCode.Code.ToString() + ". NOT adding."); 347 m_log.Error("[UDPSERVER]: clientCircuits already contains entry for user " + useCircuit.CircuitCode.Code.ToString() + ". NOT adding.");
329 } 348 }
330 349
331 // This doesn't need locking as it's synchronized data 350 // This doesn't need locking as it's synchronized data
@@ -345,13 +364,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
345 364
346 PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass, epProxy); 365 PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass, epProxy);
347 } 366 }
367
348 PacketPool.Instance.ReturnPacket(packet); 368 PacketPool.Instance.ReturnPacket(packet);
349 } 369 }
350 370
351 public void ServerListener() 371 public void ServerListener()
352 { 372 {
353 uint newPort = listenPort; 373 uint newPort = listenPort;
354 m_log.Info("[SERVER]: Opening UDP socket on " + listenIP.ToString() + " " + newPort + "."); 374 m_log.Info("[SERVER]: Opening UDP socket on " + listenIP + " " + newPort + ".");
355 375
356 ServerIncoming = new IPEndPoint(listenIP, (int)newPort); 376 ServerIncoming = new IPEndPoint(listenIP, (int)newPort);
357 m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 377 m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);