1
0
Fork 0

Codechange: [Network] Make hostname/client IP return strings instead of a C-string

pull/9369/head
rubidium42 2021-06-13 21:05:15 +02:00 committed by rubidium42
parent a91e29b656
commit 667301e3ec
5 changed files with 7 additions and 7 deletions

View File

@ -19,7 +19,7 @@
* IPv4 dotted representation is given. * IPv4 dotted representation is given.
* @return the hostname * @return the hostname
*/ */
const char *NetworkAddress::GetHostname() const std::string &NetworkAddress::GetHostname()
{ {
if (this->hostname.empty() && this->address.ss_family != AF_UNSPEC) { if (this->hostname.empty() && this->address.ss_family != AF_UNSPEC) {
assert(this->address_length != 0); 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); getnameinfo((struct sockaddr *)&this->address, this->address_length, buffer, sizeof(buffer), nullptr, 0, NI_NUMERICHOST);
this->hostname = buffer; this->hostname = buffer;
} }
return this->hostname.c_str(); return this->hostname;
} }
/** /**

View File

@ -88,7 +88,7 @@ public:
this->SetPort(port); this->SetPort(port);
} }
const char *GetHostname(); const std::string &GetHostname();
std::string GetAddressAsString(bool with_family = true); std::string GetAddressAsString(bool with_family = true);
const sockaddr_storage *GetAddress(); const sockaddr_storage *GetAddress();

View File

@ -183,7 +183,7 @@ void TCPConnecter::Resolve()
auto start = std::chrono::steady_clock::now(); auto start = std::chrono::steady_clock::now();
addrinfo *ai; 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 end = std::chrono::steady_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::seconds>(end - start); auto duration = std::chrono::duration_cast<std::chrono::seconds>(end - start);

View File

@ -1924,7 +1924,7 @@ void NetworkServerDailyLoop()
* Get the IP address/hostname of the connected client. * Get the IP address/hostname of the connected client.
* @return The IP address. * @return The IP address.
*/ */
const char *ServerNetworkGameSocketHandler::GetClientIP() const std::string &ServerNetworkGameSocketHandler::GetClientIP()
{ {
return this->client_address.GetHostname(); 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()) { for (NetworkClientSocket *cs : NetworkClientSocket::Iterate()) {
if (cs->client_id == CLIENT_ID_SERVER) continue; if (cs->client_id == CLIENT_ID_SERVER) continue;
if (cs->client_id == _redirect_console_to_client) 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); NetworkServerKickClient(cs->client_id, reason);
n++; n++;
} }

View File

@ -115,7 +115,7 @@ public:
return "server"; return "server";
} }
const char *GetClientIP(); const std::string &GetClientIP();
static ServerNetworkGameSocketHandler *GetByClientID(ClientID client_id); static ServerNetworkGameSocketHandler *GetByClientID(ClientID client_id);
}; };