From c0431f8a1765a9f7bf69dc36f7000e8df16bc36e Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 29 Oct 2017 10:02:32 -0400 Subject: [PATCH] Fixed not checking for sync on socket. --- Source/Framework/Networking/SocketBase.cs | 19 ++++++++++--------- Source/Game/Network/WorldSocket.cs | 3 +-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Source/Framework/Networking/SocketBase.cs b/Source/Framework/Networking/SocketBase.cs index 4dfa7c1bb..3f373d08c 100644 --- a/Source/Framework/Networking/SocketBase.cs +++ b/Source/Framework/Networking/SocketBase.cs @@ -61,11 +61,12 @@ namespace Framework.Networking socketEventargs.SetBuffer(_receiveBuffer, 0, _receiveBuffer.Length); - socketEventargs.Completed += ReadHandlerInternal; - socketEventargs.UserToken = _socket; + socketEventargs.Completed += (sender, args) => ReadHandlerInternal(args); socketEventargs.SocketFlags = SocketFlags.None; + socketEventargs.RemoteEndPoint = _socket.RemoteEndPoint; - _socket.ReceiveAsync(socketEventargs); + if (!_socket.ReceiveAsync(socketEventargs)) + ReadHandlerInternal(socketEventargs); } catch (Exception ex) { @@ -73,7 +74,7 @@ namespace Framework.Networking } } - public delegate void SocketReadCallback(object sender, SocketAsyncEventArgs args); + public delegate void SocketReadCallback(SocketAsyncEventArgs args); public void AsyncReadWithCallback(SocketReadCallback callback) { if (!IsOpen()) @@ -85,11 +86,11 @@ namespace Framework.Networking socketEventargs.SetBuffer(_receiveBuffer, 0, _receiveBuffer.Length); - socketEventargs.Completed += new EventHandler(callback); + socketEventargs.Completed += (sender, args) => callback(args); socketEventargs.UserToken = _socket; socketEventargs.SocketFlags = SocketFlags.None; - - _socket.ReceiveAsync(socketEventargs); + if (!_socket.ReceiveAsync(socketEventargs)) + callback(socketEventargs); } catch (Exception ex) { @@ -97,9 +98,8 @@ namespace Framework.Networking } } - void ReadHandlerInternal(object sender, SocketAsyncEventArgs args) + void ReadHandlerInternal(SocketAsyncEventArgs args) { - args.Completed -= ReadHandlerInternal; if (args.SocketError != SocketError.Success) { CloseSocket(); @@ -126,6 +126,7 @@ namespace Framework.Networking socketEventargs.SetBuffer(data, 0, data.Length); socketEventargs.Completed += WriteHandlerInternal; socketEventargs.RemoteEndPoint = _socket.RemoteEndPoint; + socketEventargs.UserToken = _socket; socketEventargs.SocketFlags = SocketFlags.None; _socket.SendAsync(socketEventargs); diff --git a/Source/Game/Network/WorldSocket.cs b/Source/Game/Network/WorldSocket.cs index 258c5c644..a036472cb 100644 --- a/Source/Game/Network/WorldSocket.cs +++ b/Source/Game/Network/WorldSocket.cs @@ -84,9 +84,8 @@ namespace Game.Network AsyncReadWithCallback(InitializeHandler); } - public void InitializeHandler(object sender, SocketAsyncEventArgs args) + public void InitializeHandler(SocketAsyncEventArgs args) { - args.Completed -= InitializeHandler; if (args.SocketError != SocketError.Success) { CloseSocket();