Network/Socket: Fix IPv6 encoding

This commit is contained in:
Lynix 2018-04-01 21:30:07 +02:00
parent df510aeb78
commit a5400f07c9
2 changed files with 6 additions and 5 deletions

View File

@ -218,9 +218,9 @@ namespace Nz
IpAddress::IPv6 address = ipAddress.ToIPv6(); IpAddress::IPv6 address = ipAddress.ToIPv6();
for (unsigned int i = 0; i < 8; ++i) for (unsigned int i = 0; i < 8; ++i)
{ {
UInt16 networkOrder = htons(address[i]); u_short addressPart = htons(address[i]);
socketAddress->sin6_addr.s6_addr[2 * i] = networkOrder / 256; socketAddress->sin6_addr.s6_addr[i * 2 + 0] = addressPart >> 0;
socketAddress->sin6_addr.s6_addr[2 * i + 1] = networkOrder % 256; socketAddress->sin6_addr.s6_addr[i * 2 + 1] = addressPart >> 8;
} }
return sizeof(sockaddr_in6); return sizeof(sockaddr_in6);

View File

@ -258,8 +258,9 @@ namespace Nz
IpAddress::IPv6 address = ipAddress.ToIPv6(); IpAddress::IPv6 address = ipAddress.ToIPv6();
for (unsigned int i = 0; i < 8; ++i) for (unsigned int i = 0; i < 8; ++i)
{ {
socketAddress->sin6_addr.s6_addr[i * 2 + 0] = htons(address[i]) >> 8; u_short addressPart = htons(address[i]);
socketAddress->sin6_addr.s6_addr[i * 2 + 1] = htons(address[i]) >> 0; socketAddress->sin6_addr.s6_addr[i * 2 + 0] = addressPart >> 0;
socketAddress->sin6_addr.s6_addr[i * 2 + 1] = addressPart >> 8;
} }
return sizeof(sockaddr_in6); return sizeof(sockaddr_in6);