From 667301e3ecc39ecd6bce286fafe25247d774642f Mon Sep 17 00:00:00 2001 From: rubidium42 Date: Sun, 13 Jun 2021 21:05:15 +0200 Subject: Codechange: [Network] Make hostname/client IP return strings instead of a C-string --- src/network/core/address.cpp | 4 ++-- src/network/core/address.h | 2 +- src/network/core/tcp_connect.cpp | 2 +- src/network/network_server.cpp | 4 ++-- src/network/network_server.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/network') diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index ba9ae69fc..0c16a2c3c 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -19,7 +19,7 @@ * IPv4 dotted representation is given. * @return the hostname */ -const char *NetworkAddress::GetHostname() +const std::string &NetworkAddress::GetHostname() { if (this->hostname.empty() && this->address.ss_family != AF_UNSPEC) { assert(this->address_length != 0); @@ -27,7 +27,7 @@ const char *NetworkAddress::GetHostname() getnameinfo((struct sockaddr *)&this->address, this->address_length, buffer, sizeof(buffer), nullptr, 0, NI_NUMERICHOST); this->hostname = buffer; } - return this->hostname.c_str(); + return this->hostname; } /** diff --git a/src/network/core/address.h b/src/network/core/address.h index 46d0acef1..af10a2756 100644 --- a/src/network/core/address.h +++ b/src/network/core/address.h @@ -88,7 +88,7 @@ public: this->SetPort(port); } - const char *GetHostname(); + const std::string &GetHostname(); std::string GetAddressAsString(bool with_family = true); const sockaddr_storage *GetAddress(); diff --git a/src/network/core/tcp_connect.cpp b/src/network/core/tcp_connect.cpp index 5538416f6..f251f0288 100644 --- a/src/network/core/tcp_connect.cpp +++ b/src/network/core/tcp_connect.cpp @@ -183,7 +183,7 @@ void TCPConnecter::Resolve() auto start = std::chrono::steady_clock::now(); addrinfo *ai; - int error = getaddrinfo(address.GetHostname(), port_name, &hints, &ai); + int error = getaddrinfo(address.GetHostname().c_str(), port_name, &hints, &ai); auto end = std::chrono::steady_clock::now(); auto duration = std::chrono::duration_cast(end - start); diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 81d4500a2..9868c905e 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1924,7 +1924,7 @@ void NetworkServerDailyLoop() * Get the IP address/hostname of the connected client. * @return The IP address. */ -const char *ServerNetworkGameSocketHandler::GetClientIP() +const std::string &ServerNetworkGameSocketHandler::GetClientIP() { return this->client_address.GetHostname(); } @@ -2094,7 +2094,7 @@ uint NetworkServerKickOrBanIP(const std::string &ip, bool ban, const std::string for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) { if (cs->client_id == CLIENT_ID_SERVER) continue; if (cs->client_id == _redirect_console_to_client) continue; - if (cs->client_address.IsInNetmask(ip.c_str())) { + if (cs->client_address.IsInNetmask(ip)) { NetworkServerKickClient(cs->client_id, reason); n++; } diff --git a/src/network/network_server.h b/src/network/network_server.h index 7a3fa3eac..fe15e2a54 100644 --- a/src/network/network_server.h +++ b/src/network/network_server.h @@ -115,7 +115,7 @@ public: return "server"; } - const char *GetClientIP(); + const std::string &GetClientIP(); static ServerNetworkGameSocketHandler *GetByClientID(ClientID client_id); }; -- cgit v1.2.3-54-g00ecf