diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/UDPServer.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/UDPServer.cs | 60 |
1 files changed, 25 insertions, 35 deletions
diff --git a/OpenSim/Region/ClientStack/UDPServer.cs b/OpenSim/Region/ClientStack/UDPServer.cs index 584b80c..e5965cb 100644 --- a/OpenSim/Region/ClientStack/UDPServer.cs +++ b/OpenSim/Region/ClientStack/UDPServer.cs | |||
@@ -32,13 +32,10 @@ using System.Net.Sockets; | |||
32 | using libsecondlife.Packets; | 32 | using libsecondlife.Packets; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Communications.Cache; | 34 | using OpenSim.Framework.Communications.Cache; |
35 | using OpenSim.Framework; | ||
36 | using OpenSim.Framework.Console; | 35 | using OpenSim.Framework.Console; |
37 | using OpenSim.Framework.Interfaces; | ||
38 | 36 | ||
39 | namespace OpenSim.Region.ClientStack | 37 | namespace OpenSim.Region.ClientStack |
40 | { | 38 | { |
41 | |||
42 | public class UDPServer : ClientStackNetworkHandler | 39 | public class UDPServer : ClientStackNetworkHandler |
43 | { | 40 | { |
44 | protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>(); | 41 | protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>(); |
@@ -59,22 +56,16 @@ namespace OpenSim.Region.ClientStack | |||
59 | 56 | ||
60 | public PacketServer PacketServer | 57 | public PacketServer PacketServer |
61 | { | 58 | { |
62 | get | 59 | get { return m_packetServer; } |
63 | { | 60 | set { m_packetServer = value; } |
64 | return m_packetServer; | ||
65 | } | ||
66 | set | ||
67 | { | ||
68 | m_packetServer = value; | ||
69 | } | ||
70 | } | 61 | } |
71 | 62 | ||
72 | public IScene LocalScene | 63 | public IScene LocalScene |
73 | { | 64 | { |
74 | set | 65 | set |
75 | { | 66 | { |
76 | this.m_localScene = value; | 67 | m_localScene = value; |
77 | this.m_packetServer.LocalScene = this.m_localScene; | 68 | m_packetServer.LocalScene = m_localScene; |
78 | } | 69 | } |
79 | } | 70 | } |
80 | 71 | ||
@@ -85,10 +76,10 @@ namespace OpenSim.Region.ClientStack | |||
85 | public UDPServer(int port, AssetCache assetCache, LogBase console, AgentCircuitManager authenticateClass) | 76 | public UDPServer(int port, AssetCache assetCache, LogBase console, AgentCircuitManager authenticateClass) |
86 | { | 77 | { |
87 | listenPort = port; | 78 | listenPort = port; |
88 | this.m_assetCache = assetCache; | 79 | m_assetCache = assetCache; |
89 | this.m_log = console; | 80 | m_log = console; |
90 | this.m_authenticateSessionsClass = authenticateClass; | 81 | m_authenticateSessionsClass = authenticateClass; |
91 | this.CreatePacketServer(); | 82 | CreatePacketServer(); |
92 | } | 83 | } |
93 | 84 | ||
94 | protected virtual void CreatePacketServer() | 85 | protected virtual void CreatePacketServer() |
@@ -99,7 +90,7 @@ namespace OpenSim.Region.ClientStack | |||
99 | protected virtual void OnReceivedData(IAsyncResult result) | 90 | protected virtual void OnReceivedData(IAsyncResult result) |
100 | { | 91 | { |
101 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | 92 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); |
102 | epSender = (EndPoint)ipeSender; | 93 | epSender = (EndPoint) ipeSender; |
103 | Packet packet = null; | 94 | Packet packet = null; |
104 | 95 | ||
105 | int numBytes; | 96 | int numBytes; |
@@ -108,7 +99,7 @@ namespace OpenSim.Region.ClientStack | |||
108 | { | 99 | { |
109 | numBytes = Server.EndReceiveFrom(result, ref epSender); | 100 | numBytes = Server.EndReceiveFrom(result, ref epSender); |
110 | } | 101 | } |
111 | catch (System.Net.Sockets.SocketException e) | 102 | catch (SocketException e) |
112 | { | 103 | { |
113 | // TODO : Actually only handle those states that we have control over, re-throw everything else, | 104 | // TODO : Actually only handle those states that we have control over, re-throw everything else, |
114 | // TODO: implement cases as we encounter them. | 105 | // TODO: implement cases as we encounter them. |
@@ -134,7 +125,7 @@ namespace OpenSim.Region.ClientStack | |||
134 | if (clientCircuits.TryGetValue(epSender, out circuit)) | 125 | if (clientCircuits.TryGetValue(epSender, out circuit)) |
135 | { | 126 | { |
136 | //if so then send packet to the packetserver | 127 | //if so then send packet to the packetserver |
137 | this.m_packetServer.InPacket(circuit, packet); | 128 | m_packetServer.InPacket(circuit, packet); |
138 | } | 129 | } |
139 | else if (packet.Type == PacketType.UseCircuitCode) | 130 | else if (packet.Type == PacketType.UseCircuitCode) |
140 | { | 131 | { |
@@ -142,7 +133,8 @@ namespace OpenSim.Region.ClientStack | |||
142 | AddNewClient(packet); | 133 | AddNewClient(packet); |
143 | } | 134 | } |
144 | else | 135 | else |
145 | { // invalid client | 136 | { |
137 | // invalid client | ||
146 | m_log.Warn("client", "Got a packet from an invalid client - " + epSender.ToString()); | 138 | m_log.Warn("client", "Got a packet from an invalid client - " + epSender.ToString()); |
147 | } | 139 | } |
148 | 140 | ||
@@ -160,10 +152,10 @@ namespace OpenSim.Region.ClientStack | |||
160 | 152 | ||
161 | protected virtual void AddNewClient(Packet packet) | 153 | protected virtual void AddNewClient(Packet packet) |
162 | { | 154 | { |
163 | UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet; | 155 | UseCircuitCodePacket useCircuit = (UseCircuitCodePacket) packet; |
164 | this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); | 156 | clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); |
165 | 157 | ||
166 | this.PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass); | 158 | PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass); |
167 | } | 159 | } |
168 | 160 | ||
169 | public void ServerListener() | 161 | public void ServerListener() |
@@ -177,24 +169,24 @@ namespace OpenSim.Region.ClientStack | |||
177 | m_log.Verbose("SERVER", "UDP socket bound, getting ready to listen"); | 169 | m_log.Verbose("SERVER", "UDP socket bound, getting ready to listen"); |
178 | 170 | ||
179 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | 171 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); |
180 | epSender = (EndPoint)ipeSender; | 172 | epSender = (EndPoint) ipeSender; |
181 | ReceivedData = new AsyncCallback(this.OnReceivedData); | 173 | ReceivedData = new AsyncCallback(OnReceivedData); |
182 | Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | 174 | Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); |
183 | 175 | ||
184 | m_log.Status("SERVER", "Listening..."); | 176 | m_log.Status("SERVER", "Listening..."); |
185 | |||
186 | } | 177 | } |
187 | 178 | ||
188 | public virtual void RegisterPacketServer(PacketServer server) | 179 | public virtual void RegisterPacketServer(PacketServer server) |
189 | { | 180 | { |
190 | this.m_packetServer = server; | 181 | m_packetServer = server; |
191 | } | 182 | } |
192 | 183 | ||
193 | public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)//EndPoint packetSender) | 184 | public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) |
185 | //EndPoint packetSender) | ||
194 | { | 186 | { |
195 | // find the endpoint for this circuit | 187 | // find the endpoint for this circuit |
196 | EndPoint sendto = null; | 188 | EndPoint sendto = null; |
197 | foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits) | 189 | foreach (KeyValuePair<EndPoint, uint> p in clientCircuits) |
198 | { | 190 | { |
199 | if (p.Value == circuitcode) | 191 | if (p.Value == circuitcode) |
200 | { | 192 | { |
@@ -205,22 +197,20 @@ namespace OpenSim.Region.ClientStack | |||
205 | if (sendto != null) | 197 | if (sendto != null) |
206 | { | 198 | { |
207 | //we found the endpoint so send the packet to it | 199 | //we found the endpoint so send the packet to it |
208 | this.Server.SendTo(buffer, size, flags, sendto); | 200 | Server.SendTo(buffer, size, flags, sendto); |
209 | } | 201 | } |
210 | } | 202 | } |
211 | 203 | ||
212 | public virtual void RemoveClientCircuit(uint circuitcode) | 204 | public virtual void RemoveClientCircuit(uint circuitcode) |
213 | { | 205 | { |
214 | foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits) | 206 | foreach (KeyValuePair<EndPoint, uint> p in clientCircuits) |
215 | { | 207 | { |
216 | if (p.Value == circuitcode) | 208 | if (p.Value == circuitcode) |
217 | { | 209 | { |
218 | this.clientCircuits.Remove(p.Key); | 210 | clientCircuits.Remove(p.Key); |
219 | break; | 211 | break; |
220 | } | 212 | } |
221 | } | 213 | } |
222 | } | 214 | } |
223 | |||
224 | |||
225 | } | 215 | } |
226 | } \ No newline at end of file | 216 | } \ No newline at end of file |