Network/ENet: Fix fragments and cleanup

This commit is contained in:
Lynix
2017-01-28 11:06:09 +01:00
parent 664e3a33ec
commit 8fc734674d
4 changed files with 73 additions and 61 deletions

View File

@@ -54,14 +54,14 @@ namespace Nz
command.header.channelID = 0xFF;
command.disconnect.data = HostToNet(data);
if (m_state == ENetPeerState::Connected || m_state == ENetPeerState::DisconnectLater)
if (IsConnected())
command.header.command |= ENetProtocolFlag_Acknowledge;
else
command.header.command |= ENetProtocolFlag_Unsequenced;
QueueOutgoingCommand(command, nullptr, 0, 0);
if (m_state == ENetPeerState::Connected || m_state == ENetPeerState::DisconnectLater)
if (IsConnected())
{
OnDisconnect();
@@ -77,10 +77,7 @@ namespace Nz
void ENetPeer::DisconnectLater(UInt32 data)
{
if ((m_state == ENetPeerState::Connected || m_state == ENetPeerState::DisconnectLater) &&
!m_outgoingReliableCommands.empty() &&
!m_outgoingUnreliableCommands.empty() &&
!m_sentReliableCommands.empty())
if (IsConnected() && !m_outgoingReliableCommands.empty() && !m_outgoingUnreliableCommands.empty() && !m_sentReliableCommands.empty())
{
m_state = ENetPeerState::DisconnectLater;
m_eventData = data;
@@ -383,8 +380,8 @@ namespace Nz
channel.incomingReliableSequenceNumber = incomingCommand.reliableSequenceNumber;
if (!incomingCommand.fragments.empty())
channel.incomingReliableSequenceNumber += incomingCommand.fragments.size() - 1;
if (incomingCommand.fragments.GetSize() == 0)
channel.incomingReliableSequenceNumber += incomingCommand.fragments.GetSize() - 1;
}
if (currentCommand == channel.incomingReliableCommands.begin())
@@ -477,7 +474,7 @@ namespace Nz
void ENetPeer::OnConnect()
{
if (m_state != ENetPeerState::Connected && m_state != ENetPeerState::DisconnectLater)
if (!IsConnected())
{
if (m_incomingBandwidth != 0)
++m_host->m_bandwidthLimitedPeers;
@@ -488,7 +485,7 @@ namespace Nz
void ENetPeer::OnDisconnect()
{
if (m_state == ENetPeerState::Connected || m_state == ENetPeerState::DisconnectLater)
if (IsConnected())
{
if (m_incomingBandwidth != 0)
--m_host->m_bandwidthLimitedPeers;
@@ -754,7 +751,7 @@ namespace Nz
incomingCommand.unreliableSequenceNumber = unreliableSequenceNumber & 0xFFFF;
incomingCommand.command = command;
incomingCommand.packet = packet;
incomingCommand.fragments.resize(fragmentCount, 0);
incomingCommand.fragments.Resize(fragmentCount);
incomingCommand.fragmentsRemaining = fragmentCount;
if (packet)