use random source port to work around 'address in use' error

This commit is contained in:
Christian Ulrich 2020-09-25 20:58:04 +02:00
parent 56bfb253e5
commit bf2fcc1602
No known key found for this signature in database
GPG Key ID: 8241BE099775A097
1 changed files with 4 additions and 4 deletions

View File

@ -6,8 +6,6 @@ import asyncutils
import ../../message
import random
const AcceptPort = Port(2000)
type
PunchdResponse = Future[tuple[msgContent: string, sock: AsyncSocket]]
PunchdProgressCb = proc (future: PunchdResponse, msgContent: string) {.async.}
@ -214,11 +212,13 @@ proc runApp(serverHostname: string, serverPort: Port, peerId: string,
asyncCheck handlePunchdMessages(punchdConn)
if otherPeerId.len == 0:
# register and wait for connections
let acceptPort = rand(Port(1024) .. Port.high)
echo &"init server connection, probing port: {acceptPort}"
let serverConn = await initServerConnection(serverHostname, serverPort,
AcceptPort)
acceptPort)
asyncCheck handleServerMessages(serverConn)
asyncCheck handlePeerNotifications(serverConn, punchdConn, peerId)
let myPorts = (@[AcceptPort] & serverConn.probedPorts).join(",")
let myPorts = (@[acceptPort] & serverConn.probedPorts).join(",")
let req = &"{peerId}|{serverConn.probedIp}|{myPorts}"
echo "registering: ", req
discard await serverConn.sendRequest("register", req)