Skip to content

Commit 087d12d

Browse files
committed
more secure close connection.
1 parent 32abe3c commit 087d12d

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

LiteNetLib/NetClient.cs

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public sealed class NetClient : NetBase
1616
private int _connectTimer;
1717
private ulong _connectId;
1818
private readonly string _connectKey;
19+
private readonly object _connectionCloseLock = new object();
1920

2021
public NetClient(INetEventListener listener, string connectKey) : base(listener)
2122
{
@@ -51,29 +52,36 @@ public bool IsConnected
5152

5253
private void CloseConnection(bool force, string info)
5354
{
54-
//Close threads
55-
base.Stop();
56-
57-
//Send goodbye
58-
if (_peer != null && !force && _connected)
55+
lock (_connectionCloseLock)
5956
{
60-
//Send disconnect data
61-
var disconnectPacket = NetPacket.CreateRawPacket(PacketProperty.Disconnect, 8);
62-
FastBitConverter.GetBytes(disconnectPacket, 1, _connectId);
63-
_peer.SendRawData(disconnectPacket);
64-
}
57+
//Nothing to do
58+
if (!IsRunning)
59+
return;
6560

66-
//Clear data
67-
_peer = null;
68-
_connected = false;
69-
_connectTimer = 0;
70-
_connectAttempts = 0;
71-
SocketClearPeers();
61+
//Send goodbye
62+
if (_peer != null && !force && _connected)
63+
{
64+
//Send disconnect data
65+
var disconnectPacket = NetPacket.CreateRawPacket(PacketProperty.Disconnect, 8);
66+
FastBitConverter.GetBytes(disconnectPacket, 1, _connectId);
67+
_peer.SendRawData(disconnectPacket);
68+
}
7269

73-
//Send event to Listener
74-
var netEvent = CreateEvent(NetEventType.Disconnect);
75-
netEvent.AdditionalInfo = info;
76-
EnqueueEvent(netEvent);
70+
//Close threads and socket close
71+
base.Stop();
72+
73+
//Clear data
74+
_peer = null;
75+
_connected = false;
76+
_connectTimer = 0;
77+
_connectAttempts = 0;
78+
SocketClearPeers();
79+
80+
//Send event to Listener
81+
var netEvent = CreateEvent(NetEventType.Disconnect);
82+
netEvent.AdditionalInfo = info;
83+
EnqueueEvent(netEvent);
84+
}
7785
}
7886

7987
/// <summary>

0 commit comments

Comments
 (0)