Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #11145 from AdmiralCurtiss/send-packet-check
Check return values of ENet functions when sending packet.
  • Loading branch information
JMC47 committed Oct 9, 2022
2 parents 5f3e8e0 + bfbc04e commit e288786
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 6 deletions.
21 changes: 21 additions & 0 deletions Source/Core/Common/ENetUtil.cpp
Expand Up @@ -4,6 +4,7 @@
#include "Common/ENetUtil.h"

#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"

namespace ENetUtil
{
Expand Down Expand Up @@ -35,4 +36,24 @@ int ENET_CALLBACK InterceptCallback(ENetHost* host, ENetEvent* event)
}
return 0;
}

bool SendPacket(ENetPeer* socket, const sf::Packet& packet, u8 channel_id)
{
ENetPacket* epac =
enet_packet_create(packet.getData(), packet.getDataSize(), ENET_PACKET_FLAG_RELIABLE);
if (!epac)
{
ERROR_LOG_FMT(NETPLAY, "Failed to create ENetPacket ({} bytes).", packet.getDataSize());
return false;
}

const int result = enet_peer_send(socket, channel_id, epac);
if (result != 0)
{
ERROR_LOG_FMT(NETPLAY, "Failed to send ENetPacket (error code {}).", result);
return false;
}

return true;
}
} // namespace ENetUtil
5 changes: 5 additions & 0 deletions Source/Core/Common/ENetUtil.h
Expand Up @@ -5,8 +5,13 @@

#include <enet/enet.h>

#include <SFML/Network/Packet.hpp>

#include "Common/CommonTypes.h"

namespace ENetUtil
{
void WakeupThread(ENetHost* host);
int ENET_CALLBACK InterceptCallback(ENetHost* host, ENetEvent* event);
bool SendPacket(ENetPeer* socket, const sf::Packet& packet, u8 channel_id);
} // namespace ENetUtil
4 changes: 1 addition & 3 deletions Source/Core/Core/NetPlayClient.cpp
Expand Up @@ -1465,9 +1465,7 @@ void NetPlayClient::OnGameDigestAbort()

void NetPlayClient::Send(const sf::Packet& packet, const u8 channel_id)
{
ENetPacket* epac =
enet_packet_create(packet.getData(), packet.getDataSize(), ENET_PACKET_FLAG_RELIABLE);
enet_peer_send(m_server, channel_id, epac);
ENetUtil::SendPacket(m_server, packet, channel_id);
}

void NetPlayClient::DisplayPlayersPing()
Expand Down
4 changes: 1 addition & 3 deletions Source/Core/Core/NetPlayServer.cpp
Expand Up @@ -2008,9 +2008,7 @@ void NetPlayServer::SendToClients(const sf::Packet& packet, const PlayerId skip_

void NetPlayServer::Send(ENetPeer* socket, const sf::Packet& packet, const u8 channel_id)
{
ENetPacket* epac =
enet_packet_create(packet.getData(), packet.getDataSize(), ENET_PACKET_FLAG_RELIABLE);
enet_peer_send(socket, channel_id, epac);
ENetUtil::SendPacket(socket, packet, channel_id);
}

void NetPlayServer::KickPlayer(PlayerId player)
Expand Down

0 comments on commit e288786

Please sign in to comment.