mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
Merge pull request #7992 from yglukhov/fromSockAddr-compile-error
Fixed compilation error when Sockaddr_in4 or Sockaddr_in6 passed to fromSockAddr
This commit is contained in:
@@ -447,7 +447,7 @@ proc fromSockAddr*(sa: Sockaddr_storage | SockAddr | Sockaddr_in | Sockaddr_in6,
|
||||
sl: Socklen, address: var IpAddress, port: var Port) {.inline.} =
|
||||
## Converts `SockAddr` and `Socklen` to `IpAddress` and `Port`. Raises
|
||||
## `ObjectConversionError` in case of invalid `sa` and `sl` arguments.
|
||||
fromSockAddrAux(unsafeAddr sa, sl, address, port)
|
||||
fromSockAddrAux(cast[ptr Sockaddr_storage](unsafeAddr sa), sl, address, port)
|
||||
|
||||
when defineSsl:
|
||||
CRYPTO_malloc_init()
|
||||
|
||||
@@ -66,6 +66,18 @@ block: # "IpAddress/Sockaddr conversion"
|
||||
doAssert(ipaddr_1 == ipaddr_2)
|
||||
doAssert($ipaddr_1 == $ipaddr_2)
|
||||
|
||||
if sockaddr.ss_family == AF_INET.toInt:
|
||||
var sockaddr4: Sockaddr_in
|
||||
copyMem(addr sockaddr4, addr sockaddr, sizeof(sockaddr4))
|
||||
fromSockAddr(sockaddr4, socklen, ipaddr_2, port_2)
|
||||
elif sockaddr.ss_family == AF_INET6.toInt:
|
||||
var sockaddr6: Sockaddr_in6
|
||||
copyMem(addr sockaddr6, addr sockaddr, sizeof(sockaddr6))
|
||||
fromSockAddr(sockaddr6, socklen, ipaddr_2, port_2)
|
||||
|
||||
doAssert(ipaddr_1 == ipaddr_2)
|
||||
doAssert($ipaddr_1 == $ipaddr_2)
|
||||
|
||||
|
||||
# ipv6 address of example.com
|
||||
test("2606:2800:220:1:248:1893:25c8:1946")
|
||||
|
||||
Reference in New Issue
Block a user