don't use `switch.dial` in `subscribeToPeer` (#227)

* count published messages

* don't call `switch.dial` in `subscribeToPeer`
This commit is contained in:
Dmitriy Ryajov 2020-06-17 20:12:32 -06:00 committed by GitHub
parent fe828d87d8
commit 5f75e5adc6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 6 deletions

View File

@ -375,17 +375,24 @@ proc stop*(s: Switch) {.async.} =
warn "error stopping switch", exc = exc.msg
proc subscribeToPeer*(s: Switch, peerInfo: PeerInfo) {.async, gcsafe.} =
trace "about to subscribe to pubsub peer", peer = peerInfo.shortLog()
## Subscribe to pub sub peer
if s.pubSub.isSome and peerInfo.id notin s.dialedPubSubPeers:
if s.pubSub.isSome and (peerInfo.id notin s.dialedPubSubPeers):
let conn = await s.getMuxedStream(peerInfo)
try:
s.dialedPubSubPeers.incl(peerInfo.id)
let conn = await s.dial(peerInfo, s.pubSub.get().codec)
if isNil(conn):
trace "unable to subscribe to peer"
trace "unable to subscribe to peer", peer = peerInfo.shortLog
return
await s.pubSub.get().subscribeToPeer(conn)
s.dialedPubSubPeers.incl(peerInfo.id)
if (await s.ms.select(conn, s.pubSub.get().codec)):
await s.pubSub.get().subscribeToPeer(conn)
else:
await conn.close()
except CatchableError as exc:
trace "exception in subscribe to peer", exc = exc.msg
trace "exception in subscribe to peer", peer = peerInfo.shortLog, exc = exc.msg
await conn.close()
finally:
s.dialedPubSubPeers.excl(peerInfo.id)