-
Notifications
You must be signed in to change notification settings - Fork 235
Open
Description
The current code unnecessarily added the following lines to listen for the new connections during handleDisconnections.
if (mConnectedPlayers < mMaxConnectedPlayers)
{
mPeers.push_back(PeerPtr(new RemotePeer()));
setListening(true);
}
I think the reason why this was done was to do setListening(true); after handleIncomingConnections'
if (mConnectedPlayers >= mMaxConnectedPlayers)
setListening(false);
However, it is incorrect to add a new spot in mPeers during handleDisconnections.
Instead, handleDisconnections should only setListening(true) when the mPeers was full like below.
void GameServer::handleDisconnections()
{
for (auto itr = mPeers.begin(); itr != mPeers.end();)
{
PeerPtr& peer = *itr;
if (peer->timedOut)
{
for (int32_t aircraftIdentifier : peer->aircraftIdentifiers)
{
sf::Packet packet;
packet << static_cast<int32_t> (Server::PlayerDisconnect);
sendToAll(packet);
mAircraftInfo.erase(aircraftIdentifier);
}
if (mConnectedPlayers == mMaxConnectedPlayers)
{
setListening(true);
}
--mConnectedPlayers;
mAircraftCount -= peer->aircraftIdentifiers.size();
itr = mPeers.erase(itr);
broadcastMessage("An ally has disconnected.");
}
else
{
++itr;
}
}
}
Metadata
Metadata
Assignees
Labels
No labels