From: JamJar00 Date: Fri, 18 Nov 2016 00:04:39 +0000 (+0000) Subject: Initial fix ideas X-Git-Tag: 1.0.0~127 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=fae951728bda1efc04665b43babc6662e4682b0d;p=rhonda%2Fimpostor.hazel.git Initial fix ideas --- diff --git a/Hazel Networking Protocol.docx b/Hazel Networking Protocol.docx new file mode 100644 index 0000000..fd9c965 Binary files /dev/null and b/Hazel Networking Protocol.docx differ diff --git a/Hazel/Udp/UdpClientConnection.cs b/Hazel/Udp/UdpClientConnection.cs index 04ff3a0..afcc124 100644 --- a/Hazel/Udp/UdpClientConnection.cs +++ b/Hazel/Udp/UdpClientConnection.cs @@ -59,11 +59,6 @@ namespace Hazel.Udp /// protected override void WriteBytesToConnection(byte[] bytes) { - //Pack - SocketAsyncEventArgs args = new SocketAsyncEventArgs(); - args.SetBuffer(bytes, 0, bytes.Length); - args.RemoteEndPoint = RemoteEndPoint; - lock (socketLock) { if (State != ConnectionState.Connected && State != ConnectionState.Connecting) @@ -71,7 +66,26 @@ namespace Hazel.Udp try { - socket.SendToAsync(args); + socket.BeginSendTo( + bytes, + 0, + bytes.Length, + SocketFlags.None, + RemoteEndPoint, + delegate (IAsyncResult result) + { + try + { + lock (socket) + socket.EndSendTo(result); + } + catch (SocketException e) + { + HandleDisconnect(new HazelException("Could not send data as a SocketException occured.", e)); + } + }, + null + ); } catch (ObjectDisposedException) { diff --git a/Hazel/Udp/UdpConnectionListener.cs b/Hazel/Udp/UdpConnectionListener.cs index f999202..1d10489 100644 --- a/Hazel/Udp/UdpConnectionListener.cs +++ b/Hazel/Udp/UdpConnectionListener.cs @@ -180,14 +180,23 @@ namespace Hazel.Udp /// The endpoint to send to. internal void SendData(byte[] bytes, EndPoint endPoint) { - SocketAsyncEventArgs args = new SocketAsyncEventArgs(); - args.SetBuffer(bytes, 0, bytes.Length); - args.RemoteEndPoint = endPoint; - try { lock (listener) - listener.SendToAsync(args); + { + listener.BeginSendTo( + bytes, + 0, + bytes.Length, + SocketFlags.None, + endPoint, + delegate (IAsyncResult result) + { + listener.EndSendTo(result); + }, + null + ); + } } catch (SocketException e) {