From 4ea603932366e9640e418069c8d42bd42bee6f59 Mon Sep 17 00:00:00 2001 From: Lorenzo Delgado Date: Mon, 6 Feb 2023 11:36:37 +0100 Subject: [PATCH] chore(discv5): waku discv5 module code cleanup --- waku/v2/node/discv5/waku_discv5.nim | 57 +++++++++++++++++------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/waku/v2/node/discv5/waku_discv5.nim b/waku/v2/node/discv5/waku_discv5.nim index 6468e0295..690e2ae8b 100644 --- a/waku/v2/node/discv5/waku_discv5.nim +++ b/waku/v2/node/discv5/waku_discv5.nim @@ -5,12 +5,17 @@ else: import std/[strutils, options], - chronos, chronicles, metrics, - eth/keys, - eth/p2p/discoveryv5/[enr, node, protocol], stew/results, - ../../../../apps/wakunode2/config, ## TODO: Remove dependency on wakunode2 config module - ../../utils/[peers, wakuenr] + chronos, + chronicles, + metrics, + eth/keys, + eth/p2p/discoveryv5/enr, + eth/p2p/discoveryv5/node, + eth/p2p/discoveryv5/protocol +import + ../../utils/peers, + ../../utils/wakuenr export protocol, wakuenr @@ -20,33 +25,37 @@ declarePublicGauge waku_discv5_errors, "number of waku discv5 errors", ["type"] logScope: topics = "waku discv5" + type WakuDiscoveryV5* = ref object protocol*: protocol.Protocol listening*: bool + #################### # Helper functions # #################### -proc parseBootstrapAddress(address: string): - Result[enr.Record, cstring] = +proc parseBootstrapAddress(address: string): Result[enr.Record, cstring] = logScope: - address = string(address) + address = address if address[0] == '/': - return err "MultiAddress bootstrap addresses are not supported" + return err("MultiAddress bootstrap addresses are not supported") + + let lowerCaseAddress = toLowerAscii(address) + if lowerCaseAddress.startsWith("enr:"): + var enrRec: enr.Record + if not enrRec.fromURI(address): + return err("Invalid ENR bootstrap record") + + return ok(enrRec) + + elif lowerCaseAddress.startsWith("enode:"): + return err("ENode bootstrap addresses are not supported") + else: - let lowerCaseAddress = toLowerAscii(string address) - if lowerCaseAddress.startsWith("enr:"): - var enrRec: enr.Record - if enrRec.fromURI(string address): - return ok enrRec - return err "Invalid ENR bootstrap record" - elif lowerCaseAddress.startsWith("enode:"): - return err "ENode bootstrap addresses are not supported" - else: - return err "Ignoring unrecognized bootstrap address type" + return err("Ignoring unrecognized bootstrap address type") proc addBootstrapNode*(bootstrapAddr: string, bootstrapEnrs: var seq[enr.Record]) = @@ -55,8 +64,8 @@ proc addBootstrapNode*(bootstrapAddr: string, return let enrRes = parseBootstrapAddress(bootstrapAddr) - if enrRes.isOk: - bootstrapEnrs.add enrRes.value + if enrRes.isOk(): + bootstrapEnrs.add(enrRes.value) else: warn "Ignoring invalid bootstrap address", bootstrapAddr, reason = enrRes.error @@ -64,7 +73,7 @@ proc addBootstrapNode*(bootstrapAddr: string, proc isWakuNode(node: Node): bool = let wakuField = node.record.tryGet(WAKU_ENR_FIELD, uint8) - if wakuField.isSome: + if wakuField.isSome(): return wakuField.get().WakuEnrBitfield != 0x00 # True if any flag set to true return false @@ -92,7 +101,7 @@ proc findRandomPeers*(wakuDiscv5: WakuDiscoveryV5): Future[Result[seq[RemotePeer if res.isOk(): discoveredPeers.add(res.get()) else: - error "Failed to convert ENR to peer info", enr= $node.record, err=res.error() + error "Failed to convert ENR to peer info", enr= $node.record, err=res.error waku_discv5_errors.inc(labelValues = ["peer_info_failure"]) @@ -161,7 +170,7 @@ proc new*(T: type WakuDiscoveryV5, ) -proc open*(wakuDiscv5: WakuDiscoveryV5) {.raises: [Defect, CatchableError].} = +proc open*(wakuDiscv5: WakuDiscoveryV5) {.raises: [CatchableError].} = debug "Opening Waku discovery v5 ports" wakuDiscv5.protocol.open()