diff --git a/chronos/transports/common.nim b/chronos/transports/common.nim index e55ac50f..2e0fda75 100644 --- a/chronos/transports/common.nim +++ b/chronos/transports/common.nim @@ -200,19 +200,17 @@ proc initTAddress*(address: string): TransportAddress = else: (sizeof(result.address_un) - 1) copyMem(addr result.address_un[0], unsafeAddr address[0], size) else: - var port: Port + var port: int var parts = address.rsplit(":", maxsplit = 1) if len(parts) != 2: raise newException(TransportAddressError, "Format is
: or
!") - try: - let portint = parseInt(parts[1]) - doAssert(portint > 0 and portint < 65536) - port = Port(portint) + port = parseInt(parts[1]) except: raise newException(TransportAddressError, "Illegal port number!") - + if port < 0 or port >= 65536: + raise newException(TransportAddressError, "Illegal port number!") try: var ipaddr: IpAddress if parts[0][0] == '[' and parts[0][^1] == ']': @@ -227,7 +225,7 @@ proc initTAddress*(address: string): TransportAddress = result.address_v6 = ipaddr.address_v6 else: raise newException(TransportAddressError, "Incorrect address family!") - result.port = port + result.port = Port(port) except: raise newException(TransportAddressError, getCurrentException().msg) else: @@ -388,10 +386,12 @@ proc resolveTAddress*(address: string, try: port = parseInt(parts[1]) - doAssert(port > 0 and port < 65536) except: raise newException(TransportAddressError, "Illegal port number!") + if port < 0 or port >= 65536: + raise newException(TransportAddressError, "Illegal port number!") + if parts[0][0] == '[' and parts[0][^1] == ']': # IPv6 numeric addresses must be enclosed with `[]`. hostname = parts[0][1..^2]