Fix byte-swapping of sockaddr.sin_port (#94)

Thanks to @vinniefalco for finding this one.
This commit is contained in:
Lewis Baker 2018-11-20 14:23:09 -08:00 committed by GitHub
parent bbd3376929
commit 64534b155b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 4 deletions

View File

@ -30,7 +30,7 @@ cppcoro::net::detail::sockaddr_to_ip_endpoint(const sockaddr& address) noexcept
return ipv4_endpoint{
ipv4_address{ addressBytes },
ipv4Address.sin_port
ntohs(ipv4Address.sin_port)
};
}
else
@ -42,7 +42,7 @@ cppcoro::net::detail::sockaddr_to_ip_endpoint(const sockaddr& address) noexcept
return ipv6_endpoint{
ipv6_address{ ipv6Address.sin6_addr.u.Byte },
ipv6Address.sin6_port
ntohs(ipv6Address.sin6_port)
};
}
}
@ -58,7 +58,7 @@ int cppcoro::net::detail::ip_endpoint_to_sockaddr(
SOCKADDR_IN ipv4Address;
ipv4Address.sin_family = AF_INET;
std::memcpy(&ipv4Address.sin_addr, ipv4EndPoint.address().bytes(), 4);
ipv4Address.sin_port = ipv4EndPoint.port();
ipv4Address.sin_port = htons(ipv4EndPoint.port());
std::memset(&ipv4Address.sin_zero, 0, sizeof(ipv4Address.sin_zero));
std::memcpy(&address.get(), &ipv4Address, sizeof(ipv4Address));
@ -72,7 +72,7 @@ int cppcoro::net::detail::ip_endpoint_to_sockaddr(
SOCKADDR_IN6 ipv6Address;
ipv6Address.sin6_family = AF_INET6;
std::memcpy(&ipv6Address.sin6_addr, ipv6EndPoint.address().bytes(), 16);
ipv6Address.sin6_port = ipv6EndPoint.port();
ipv6Address.sin6_port = htons(ipv6EndPoint.port());
ipv6Address.sin6_flowinfo = 0;
ipv6Address.sin6_scope_struct = SCOPEID_UNSPECIFIED_INIT;