From 333ce0a2e1a1d1118f201e529b532409dc81a099 Mon Sep 17 00:00:00 2001 From: Alvaro Revuelta Date: Mon, 9 Jan 2023 14:15:03 +0100 Subject: [PATCH] fix(rpc): return error if peer cant be connected (#1476) --- tests/v2/test_jsonrpc_waku.nim | 9 +++++++++ waku/v2/node/jsonrpc/admin_api.nim | 11 +++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/v2/test_jsonrpc_waku.nim b/tests/v2/test_jsonrpc_waku.nim index 505a47398..5a4bcd324 100644 --- a/tests/v2/test_jsonrpc_waku.nim +++ b/tests/v2/test_jsonrpc_waku.nim @@ -389,6 +389,15 @@ procSuite "Waku v2 JSON-RPC API": getRes.anyIt(it.protocol == WakuRelayCodec and it.multiaddr == constructMultiaddrStr(peerInfo3)) + # Verify that raises an exception if we can't connect to the peer + let nonExistentPeer = "/ip4/0.0.0.0/tcp/10000/p2p/16Uiu2HAm6HZZr7aToTvEBPpiys4UxajCTU97zj5v7RNR2gbniy1D" + expect(ValueError): + discard await client.post_waku_v2_admin_v1_peers(@[nonExistentPeer]) + + let malformedPeer = "/malformed/peer" + expect(ValueError): + discard await client.post_waku_v2_admin_v1_peers(@[malformedPeer]) + await server.stop() await server.closeWait() diff --git a/waku/v2/node/jsonrpc/admin_api.nim b/waku/v2/node/jsonrpc/admin_api.nim index 2cb853770..9b5605c42 100644 --- a/waku/v2/node/jsonrpc/admin_api.nim +++ b/waku/v2/node/jsonrpc/admin_api.nim @@ -44,12 +44,11 @@ proc installAdminApiHandlers*(node: WakuNode, rpcsrv: RpcServer) = ## Connect to a list of peers debug "post_waku_v2_admin_v1_peers" - if (await node.connectToNodes(peers).withTimeout(futTimeout)): - # Successfully connected to peers - return true - else: - # Failed to connect to peers - raise newException(ValueError, "Failed to connect to peers: " & $peers) + for i, peer in peers: + let conn = await node.peerManager.dialPeer(parseRemotePeerInfo(peer), WakuRelayCodec, source="rpc") + if conn.isNone(): + raise newException(ValueError, "Failed to connect to peer at index: " & $i & " " & $peer) + return true rpcsrv.rpc("get_waku_v2_admin_v1_peers") do() -> seq[WakuPeer]: ## Returns a list of peers registered for this node