[CORE] Compare port in ogs_sockaddr_is_equal() (#1608)

This commit is contained in:
Pau Espin 2022-06-14 23:13:15 +02:00 committed by GitHub
parent 7be7029ac4
commit 038d383584
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 10 deletions

View File

@ -416,17 +416,23 @@ bool ogs_sockaddr_is_equal(void *p, void *q)
if (a->ogs_sa_family != b->ogs_sa_family)
return false;
if (a->ogs_sa_family == AF_INET && memcmp(
&a->sin.sin_addr, &b->sin.sin_addr, sizeof(struct in_addr)) == 0)
switch (a->ogs_sa_family) {
case AF_INET:
if (a->sin.sin_port != b->sin.sin_port)
return false;
if (memcmp(&a->sin.sin_addr, &b->sin.sin_addr, sizeof(struct in_addr)) != 0)
return false;
return true;
else if (a->ogs_sa_family == AF_INET6 && memcmp(
&a->sin6.sin6_addr, &b->sin6.sin6_addr, sizeof(struct in6_addr)) == 0)
case AF_INET6:
if (a->sin6.sin6_port != b->sin6.sin6_port)
return false;
if (memcmp(&a->sin6.sin6_addr, &b->sin6.sin6_addr, sizeof(struct in6_addr)) != 0)
return false;
return true;
else {
return false;
default:
ogs_error("Unexpected address faimily %u", a->ogs_sa_family);
ogs_abort();
}
return false;
}
static int parse_network(ogs_ipsubnet_t *ipsub, const char *network)

View File

@ -169,8 +169,7 @@ ogs_sbi_client_t *ogs_sbi_client_find(ogs_sockaddr_t *addr)
ogs_assert(addr);
ogs_list_for_each(&ogs_sbi_self()->client_list, client) {
if (ogs_sockaddr_is_equal(client->node.addr, addr) == true &&
OGS_PORT(client->node.addr) == OGS_PORT(addr))
if (ogs_sockaddr_is_equal(client->node.addr, addr) == true)
break;
}