mirror of https://github.com/OpenTTD/OpenTTD
Codechange: [Network] Make hostname/client IP return strings instead of a C-string
parent
a91e29b656
commit
667301e3ec
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue