mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
(svn r15990) -Codechange: provide a thread safe variant of GetAddressAsString.
This commit is contained in:
parent
e779c56e31
commit
0f0cc67d62
@ -53,15 +53,12 @@ void NetworkAddress::SetPort(uint16 port)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *NetworkAddress::GetAddressAsString(bool with_family)
|
void NetworkAddress::GetAddressAsString(char *buffer, const char *last, bool with_family)
|
||||||
{
|
{
|
||||||
/* 6 = for the : and 5 for the decimal port number */
|
if (this->GetAddress()->ss_family == AF_INET6) buffer = strecpy(buffer, "[", last);
|
||||||
static char buf[NETWORK_HOSTNAME_LENGTH + 6 + 7];
|
buffer = strecpy(buffer, this->GetHostname(), last);
|
||||||
char *p = buf;
|
if (this->GetAddress()->ss_family == AF_INET6) buffer = strecpy(buffer, "]", last);
|
||||||
if (this->GetAddress()->ss_family == AF_INET6) p = strecpy(p, "[", lastof(buf));
|
buffer += seprintf(buffer, last, ":%d", this->GetPort());
|
||||||
p = strecpy(p, this->GetHostname(), lastof(buf));
|
|
||||||
if (this->GetAddress()->ss_family == AF_INET6) p = strecpy(p, "]", lastof(buf));
|
|
||||||
p += seprintf(p, lastof(buf), ":%d", this->GetPort());
|
|
||||||
|
|
||||||
if (with_family) {
|
if (with_family) {
|
||||||
char family;
|
char family;
|
||||||
@ -70,8 +67,15 @@ const char *NetworkAddress::GetAddressAsString(bool with_family)
|
|||||||
case AF_INET6: family = '6'; break;
|
case AF_INET6: family = '6'; break;
|
||||||
default: family = '?'; break;
|
default: family = '?'; break;
|
||||||
}
|
}
|
||||||
seprintf(p, lastof(buf), " (IPv%c)", family);
|
seprintf(buffer, last, " (IPv%c)", family);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *NetworkAddress::GetAddressAsString(bool with_family)
|
||||||
|
{
|
||||||
|
/* 6 = for the : and 5 for the decimal port number */
|
||||||
|
static char buf[NETWORK_HOSTNAME_LENGTH + 6 + 7];
|
||||||
|
this->GetAddressAsString(buf, lastof(buf), with_family);
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,10 +120,19 @@ public:
|
|||||||
*/
|
*/
|
||||||
const char *GetHostname();
|
const char *GetHostname();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the address as a string, e.g. 127.0.0.1:12345.
|
||||||
|
* @param buffer the buffer to write to
|
||||||
|
* @param last the last element in the buffer
|
||||||
|
* @param with_family whether to add the family (e.g. IPvX).
|
||||||
|
*/
|
||||||
|
void GetAddressAsString(char *buffer, const char *last, bool with_family = true);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the address as a string, e.g. 127.0.0.1:12345.
|
* Get the address as a string, e.g. 127.0.0.1:12345.
|
||||||
* @param with_family whether to add the family (e.g. IPvX).
|
* @param with_family whether to add the family (e.g. IPvX).
|
||||||
* @return the address
|
* @return the address
|
||||||
|
* @note NOT thread safe
|
||||||
*/
|
*/
|
||||||
const char *GetAddressAsString(bool with_family = true);
|
const char *GetAddressAsString(bool with_family = true);
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ void NetworkUDPQueryServerThread(void *pntr)
|
|||||||
/* Clear item in gamelist */
|
/* Clear item in gamelist */
|
||||||
NetworkGameList *item = CallocT<NetworkGameList>(1);
|
NetworkGameList *item = CallocT<NetworkGameList>(1);
|
||||||
item->address = *info;
|
item->address = *info;
|
||||||
strecpy(item->info.server_name, info->GetAddressAsString(), lastof(item->info.server_name));
|
info->GetAddressAsString(item->info.server_name, lastof(item->info.server_name));
|
||||||
strecpy(item->info.hostname, info->GetHostname(), lastof(item->info.hostname));
|
strecpy(item->info.hostname, info->GetHostname(), lastof(item->info.hostname));
|
||||||
item->manually = info->manually;
|
item->manually = info->manually;
|
||||||
NetworkGameListAddItemDelayed(item);
|
NetworkGameListAddItemDelayed(item);
|
||||||
|
Loading…
Reference in New Issue
Block a user