Enet fixes (#200)

* Network/ENet: Fix UnreliableFragment flag

* Network/ENet: Match libenet new behavior on DisconnectLater
This commit is contained in:
Jérôme Leclercq
2019-03-20 17:12:34 +01:00
committed by GitHub
parent bdb5a4b3bd
commit 853e01c192
3 changed files with 14 additions and 5 deletions

View File

@@ -212,7 +212,7 @@ namespace Nz
if ((packetRef->flags & (ENetPacketFlag_Reliable | ENetPacketFlag_UnreliableFragment)) == ENetPacketFlag_UnreliableFragment &&
channel.outgoingUnreliableSequenceNumber < 0xFFFF)
{
commandNumber = ENetProtocolCommand_SendUnreliable;
commandNumber = ENetProtocolCommand_SendUnreliableFragment;
startSequenceNumber = HostToNet<UInt16>(channel.outgoingUnreliableSequenceNumber + 1);
}
else
@@ -770,7 +770,7 @@ namespace Nz
break;
if ((incomingCommand.command.header.command & ENetProtocolCommand_Mask) != ENetProtocolCommand_SendUnreliableFragment ||
totalLength != incomingCommand.packet->data.GetDataSize() || fragmentCount != incomingCommand.fragments.GetSize())
totalLength != incomingCommand.packet->data.GetDataSize() || fragmentCount != incomingCommand.fragments.GetSize())
return false;
startCommand = &incomingCommand;
@@ -778,9 +778,10 @@ namespace Nz
}
}
if (startCommand)
if (!startCommand)
{
if (!QueueIncomingCommand(*command, nullptr, totalLength, ENetPacketFlag_UnreliableFragment, fragmentCount))
startCommand = QueueIncomingCommand(*command, nullptr, totalLength, ENetPacketFlag_UnreliableFragment, fragmentCount);
if (!startCommand)
return false;
}
@@ -1040,7 +1041,13 @@ namespace Nz
void ENetPeer::RemoveSentUnreliableCommands()
{
if (m_sentUnreliableCommands.empty())
return;
m_sentUnreliableCommands.clear();
if (m_state == ENetPeerState::DisconnectLater && !HasPendingCommands())
Disconnect(m_eventData);
}
void ENetPeer::ResetQueues()