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
parent 9e884c31dd
commit 34c1ca1dd0

View File

@@ -395,7 +395,15 @@ proc getHostByAddr*(ip: string): Hostent {.tags: [ReadIOEffect].} =
result.addrtype = AF_INET6
else:
raiseOSError(osLastError(), "unknown h_addrtype")
result.addrList = cstringArrayToSeq(s.h_addr_list)
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.length = int(s.h_length)
proc getHostByName*(name: string): Hostent {.tags: [ReadIOEffect].} =
@@ -416,7 +424,15 @@ proc getHostByName*(name: string): Hostent {.tags: [ReadIOEffect].} =
result.addrtype = AF_INET6
else:
raiseOSError(osLastError(), "unknown h_addrtype")
result.addrList = cstringArrayToSeq(s.h_addr_list)
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.length = int(s.h_length)
proc getHostname*(): string {.tags: [ReadIOEffect].} =