make nativesockets.Hostent.addrlist readable for ipv4 af_inet addresses (see issue #7314) (#7327)

This commit is contained in:
skilchen 2018-04-13 23:49:23 +02:00 • committed by Andreas Rumpf
commit 34c1ca1dd0

View file

@ -395,6 +395,14 @@ proc getHostByAddr*(ip: string): Hostent {.tags: [ReadIOEffect].} =
result.addrtype = AF_INET6 result.addrtype = AF_INET6
else: else:
raiseOSError(osLastError(), "unknown h_addrtype") raiseOSError(osLastError(), "unknown h_addrtype")
if result.addrtype == AF_INET:
result.addrlist = @[]
var i = 0
while not isNil(s.h_addrlist[i]):
var inaddr_ptr = cast[ptr InAddr](s.h_addr_list[i])
result.addrlist.add($inet_ntoa(inaddr_ptr[]))
inc(i)
else:
result.addrList = cstringArrayToSeq(s.h_addr_list) result.addrList = cstringArrayToSeq(s.h_addr_list)
result.length = int(s.h_length) result.length = int(s.h_length)
@ -416,6 +424,14 @@ proc getHostByName*(name: string): Hostent {.tags: [ReadIOEffect].} =
result.addrtype = AF_INET6 result.addrtype = AF_INET6
else: else:
raiseOSError(osLastError(), "unknown h_addrtype") raiseOSError(osLastError(), "unknown h_addrtype")
if result.addrtype == AF_INET:
result.addrlist = @[]
var i = 0
while not isNil(s.h_addrlist[i]):
var inaddr_ptr = cast[ptr InAddr](s.h_addr_list[i])
result.addrlist.add($inet_ntoa(inaddr_ptr[]))
inc(i)
else:
result.addrList = cstringArrayToSeq(s.h_addr_list) result.addrList = cstringArrayToSeq(s.h_addr_list)
result.length = int(s.h_length) result.length = int(s.h_length)