diff --git a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs index ed773ed..2e9128f 100644 --- a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs +++ b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs @@ -98,9 +98,12 @@ namespace HISP.Server // HI1 Packets are terminates by 0x00 so we have to read until we receive that terminator if (!ClientSocket.Connected) - isDisconnecting = true; + Disconnect(); + + if(e.SocketError != SocketError.Success) + Disconnect(); - if (e.SocketError == SocketError.Success && !isDisconnecting) + if (!isDisconnecting) { int availble = e.BytesTransferred; @@ -123,8 +126,6 @@ namespace HISP.Server return; } - Disconnect(); - // Stop Timers if (inactivityTimer != null) inactivityTimer.Dispose(); diff --git a/HorseIsleServer/HorseIsleServer/Server/PacketBuilder.cs b/HorseIsleServer/HorseIsleServer/Server/PacketBuilder.cs index 136130e..5121a37 100644 --- a/HorseIsleServer/HorseIsleServer/Server/PacketBuilder.cs +++ b/HorseIsleServer/HorseIsleServer/Server/PacketBuilder.cs @@ -341,7 +341,7 @@ namespace HISP.Server packet[0] = PACKET_SWFMODULE; Array.Copy(drawingBytes, 0, packet, 1, drawingBytes.Length); - packet[packet.Length] = PACKET_TERMINATOR; + packet[packet.Length-1] = PACKET_TERMINATOR; return packet; } @@ -361,7 +361,7 @@ namespace HISP.Server Array.Copy(infoBytes, 0, packet, 2, infoBytes.Length); - packet[packet.Length] = PACKET_TERMINATOR; + packet[packet.Length-1] = PACKET_TERMINATOR; return packet; } @@ -446,7 +446,7 @@ namespace HISP.Server Array.Copy(userBytes, 0, packet, 9, userBytes.Length); - packet[packet.Length] = PACKET_TERMINATOR; + packet[packet.Length-1] = PACKET_TERMINATOR; return packet; } @@ -466,7 +466,7 @@ namespace HISP.Server Array.Copy(loginFailMessage, 0, packet, 2, loginFailMessage.Length); - packet[packet.Length] = PACKET_TERMINATOR; + packet[packet.Length-1] = PACKET_TERMINATOR; return packet; } @@ -478,7 +478,7 @@ namespace HISP.Server packet[0] = PACKET_PLAYER; Array.Copy(profileBytes, 0, packet, 1, profileBytes.Length); - packet[packet.Length] = PACKET_TERMINATOR; + packet[packet.Length-1] = PACKET_TERMINATOR; return packet; } @@ -503,7 +503,7 @@ namespace HISP.Server packet[8] = (byte)(direction + 20); packet[9] = (byte)(Convert.ToInt32(walk) + 20); - packet[packet.Length] = PACKET_TERMINATOR; + packet[packet.Length-1] = PACKET_TERMINATOR; return packet; }