mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Infer ipv6_server from bind_address; fix client connect to IN(6)ADDR_ANY
This commit is contained in:
parent
edcad09dee
commit
6090e95cdc
7 changed files with 88 additions and 47 deletions
|
@ -143,6 +143,15 @@ bool Address::operator!=(Address &address)
|
|||
|
||||
void Address::Resolve(const char *name)
|
||||
{
|
||||
if (!name || name[0] == 0) {
|
||||
if (m_addr_family == AF_INET) {
|
||||
setAddress((u32) 0);
|
||||
} else if (m_addr_family == AF_INET6) {
|
||||
setAddress((IPv6AddressBytes*) 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
struct addrinfo *resolved, hints;
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
|
||||
|
@ -251,6 +260,18 @@ bool Address::isIPv6() const
|
|||
return m_addr_family == AF_INET6;
|
||||
}
|
||||
|
||||
bool Address::isZero() const
|
||||
{
|
||||
if (m_addr_family == AF_INET) {
|
||||
return m_address.ipv4.sin_addr.s_addr == 0;
|
||||
} else if (m_addr_family == AF_INET6) {
|
||||
static const char zero[16] = {0};
|
||||
return memcmp(m_address.ipv6.sin6_addr.s6_addr,
|
||||
zero, 16) == 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void Address::setAddress(u32 address)
|
||||
{
|
||||
m_addr_family = AF_INET;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue