Skip to content

Commit

Permalink
add unsynced test. fix #369 #370
Browse files Browse the repository at this point in the history
  • Loading branch information
RevenantX committed May 20, 2020
1 parent 0e5880b commit d3ee215
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 19 deletions.
18 changes: 18 additions & 0 deletions LiteNetLib.Tests/CommunicationTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,24 @@ public void ConnectionByIpV4()
Assert.AreEqual(1, client.ConnectedPeersCount);
}

[Test, Timeout(TestTimeout)]
public void ConnectionByIpV4Unsynced()
{
var server = ManagerStack.Server(1);
server.UnsyncedEvents = true;
var client = ManagerStack.Client(1);
client.UnsyncedEvents = true;
client.Connect("127.0.0.1", DefaultPort, DefaultAppKey);

while (server.ConnectedPeersCount != 1 || client.ConnectedPeersCount != 1)
{
Thread.Sleep(15);
}

Assert.AreEqual(1, server.ConnectedPeersCount);
Assert.AreEqual(1, client.ConnectedPeersCount);
}

[Test, Timeout(TestTimeout)]
public void DeliveryTest()
{
Expand Down
26 changes: 9 additions & 17 deletions LiteNetLib/NetManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -901,35 +901,27 @@ private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEnd
return;
}

NetPeer netPeer;

//special case connect request
if (packet.Property == PacketProperty.ConnectRequest)
if (packet.Property == PacketProperty.ConnectRequest &&
NetConnectRequestPacket.GetProtocolId(packet) != NetConstants.ProtocolId)
{
if (NetConnectRequestPacket.GetProtocolId(packet) != NetConstants.ProtocolId)
{
SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.InvalidProtocol), remoteEndPoint);
return;
}
var connRequest = NetConnectRequestPacket.FromData(packet);
if (connRequest != null)
{
_peersLock.EnterUpgradeableReadLock();
_peersDict.TryGetValue(remoteEndPoint, out netPeer);
//here new peer can be created
ProcessConnectRequest(remoteEndPoint, netPeer, connRequest);
_peersLock.ExitUpgradeableReadLock();
}
SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.InvalidProtocol), remoteEndPoint);
return;
}

NetPeer netPeer;
_peersLock.EnterReadLock();
bool peerFound = _peersDict.TryGetValue(remoteEndPoint, out netPeer);
_peersLock.ExitReadLock();

//Check normal packets
switch (packet.Property)
{
case PacketProperty.ConnectRequest:
var connRequest = NetConnectRequestPacket.FromData(packet);
if (connRequest != null)
ProcessConnectRequest(remoteEndPoint, netPeer, connRequest);
break;
case PacketProperty.PeerNotFound:
if (peerFound)
{
Expand Down
4 changes: 2 additions & 2 deletions LiteNetLib/Utils/NetSerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@ public void Register<T>()
}

/// <summary>
/// Serialize struct to NetDataWriter (fast)
/// Serialize object to NetDataWriter (fast)
/// </summary>
/// <param name="writer">Serialization target NetDataWriter</param>
/// <param name="obj">Object to serialize</param>
Expand All @@ -585,7 +585,7 @@ public void Register<T>()
}

/// <summary>
/// Serialize struct to byte array
/// Serialize object to byte array
/// </summary>
/// <param name="obj">Object to serialize</param>
/// <returns>byte array with serialized data</returns>
Expand Down
Binary file modified LiteNetLibSampleUnity/Assets/LiteNetLib.dll
Binary file not shown.

0 comments on commit d3ee215

Please sign in to comment.