From edf3167151f7a6d08cf733b4e230e2d745819ac8 Mon Sep 17 00:00:00 2001 From: Jon Atack Date: Fri, 9 Apr 2021 09:40:57 +0200 Subject: addrinfo: raise helpfully on server error or incompatible server version --- src/bitcoin-cli.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/bitcoin-cli.cpp') diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index 2f7e49eccb..2b541be83e 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -256,9 +256,14 @@ public: UniValue ProcessReply(const UniValue& reply) override { + if (!reply["error"].isNull()) return reply; + const std::vector& nodes{reply["result"].getValues()}; + if (!nodes.empty() && nodes.at(0)["network"].isNull()) { + throw std::runtime_error("-addrinfo requires bitcoind server to be running v22.0 and up"); + } // Count the number of peers we know by network, including torv2 versus torv3. std::array counts{{}}; - for (const UniValue& node : reply["result"].getValues()) { + for (const UniValue& node : nodes) { std::string network_name{node["network"].get_str()}; if (network_name == "onion") { network_name = node["address"].get_str().size() > 22 ? "torv3" : "torv2"; -- cgit v1.2.3