From 0c0e7606d981523b91b7827fed8336c686e4bee7 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 10 Feb 2025 22:41:56 +0000 Subject: [PATCH] Codechange: Use unique_ptr for UDP client/server sockets handlers. (#13524) --- src/network/network_udp.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp index dc94da00e3..59ca4a5bb3 100644 --- a/src/network/network_udp.cpp +++ b/src/network/network_udp.cpp @@ -38,14 +38,13 @@ static uint16_t _network_udp_broadcast; ///< Timeout for the UDP broadcasts. /** Some information about a socket, which exists before the actual socket has been created to provide locking and the likes. */ struct UDPSocket { const std::string name; ///< The name of the socket. - NetworkUDPSocketHandler *socket = nullptr; ///< The actual socket, which may be nullptr when not initialized yet. + std::unique_ptr socket = nullptr; ///< The actual socket, which may be nullptr when not initialized yet. UDPSocket(const std::string &name) : name(name) {} void CloseSocket() { this->socket->CloseSocket(); - delete this->socket; this->socket = nullptr; } @@ -99,13 +98,13 @@ void ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(Packet &, NetworkAdd } /** Broadcast to all ips */ -static void NetworkUDPBroadCast(NetworkUDPSocketHandler *socket) +static void NetworkUDPBroadCast(NetworkUDPSocketHandler &socket) { for (NetworkAddress &addr : _broadcast_list) { Debug(net, 5, "Broadcasting to {}", addr.GetHostname()); - Packet p(socket, PACKET_UDP_CLIENT_FIND_SERVER); - socket->SendPacket(p, addr, true, true); + Packet p(&socket, PACKET_UDP_CLIENT_FIND_SERVER); + socket.SendPacket(p, addr, true, true); } } @@ -117,7 +116,7 @@ void NetworkUDPSearchGame() Debug(net, 3, "Searching server"); - NetworkUDPBroadCast(_udp_client.socket); + NetworkUDPBroadCast(*_udp_client.socket); _network_udp_broadcast = 300; // Stay searching for 300 ticks } @@ -130,11 +129,11 @@ void NetworkUDPInitialize() Debug(net, 3, "Initializing UDP listeners"); assert(_udp_client.socket == nullptr && _udp_server.socket == nullptr); - _udp_client.socket = new ClientNetworkUDPSocketHandler(); + _udp_client.socket = std::make_unique(); NetworkAddressList server; GetBindAddresses(&server, _settings_client.network.server_port); - _udp_server.socket = new ServerNetworkUDPSocketHandler(&server); + _udp_server.socket = std::make_unique(&server); _network_udp_server = false; _network_udp_broadcast = 0;