summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2022-10-08 21:04:14 -0400
committerGitHub <noreply@github.com>2022-10-08 21:04:14 -0400
commite28878616f494e0ccbcd7acdd1adbb9988708246 (patch)
tree10ecc5343ff59ce096f9450d55fd7a1396efe5f8 /Source/Core
parent5f3e8e0f05f0027e9c5c5d8f0d53ec58d32bc507 (diff)
parentbfbc04ef5ec6bc51a931108456e174ec2f291155 (diff)
Merge pull request #11145 from AdmiralCurtiss/send-packet-check
Check return values of ENet functions when sending packet.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/ENetUtil.cpp21
-rw-r--r--Source/Core/Common/ENetUtil.h5
-rw-r--r--Source/Core/Core/NetPlayClient.cpp4
-rw-r--r--Source/Core/Core/NetPlayServer.cpp4
4 files changed, 28 insertions, 6 deletions
diff --git a/Source/Core/Common/ENetUtil.cpp b/Source/Core/Common/ENetUtil.cpp
index 646e7f5439..d06de7c82a 100644
--- a/Source/Core/Common/ENetUtil.cpp
+++ b/Source/Core/Common/ENetUtil.cpp
@@ -4,6 +4,7 @@
#include "Common/ENetUtil.h"
#include "Common/CommonTypes.h"
+#include "Common/Logging/Log.h"
namespace ENetUtil
{
@@ -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
diff --git a/Source/Core/Common/ENetUtil.h b/Source/Core/Common/ENetUtil.h
index 62270ce533..5b06e5a007 100644
--- a/Source/Core/Common/ENetUtil.h
+++ b/Source/Core/Common/ENetUtil.h
@@ -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
diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp
index 013d7e4fe5..72b403e4d0 100644
--- a/Source/Core/Core/NetPlayClient.cpp
+++ b/Source/Core/Core/NetPlayClient.cpp
@@ -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()
diff --git a/Source/Core/Core/NetPlayServer.cpp b/Source/Core/Core/NetPlayServer.cpp
index 3d044e9121..1c4b46216f 100644
--- a/Source/Core/Core/NetPlayServer.cpp
+++ b/Source/Core/Core/NetPlayServer.cpp
@@ -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)