diff --git a/src/init.cpp b/src/init.cpp index 9273f40bb09..ad097284e04 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -782,8 +782,8 @@ void InitParameterInteraction(ArgsManager& args) if (args.SoftSetBoolArg("-whitelistrelay", true)) LogInfo("parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1\n"); } - if (args.IsArgSet("-onlynet")) { - const auto onlynets = args.GetArgs("-onlynet"); + const auto onlynets = args.GetArgs("-onlynet"); + if (!onlynets.empty()) { bool clearnet_reachable = std::any_of(onlynets.begin(), onlynets.end(), [](const auto& net) { const auto n = ParseNetwork(net); return n == NET_IPV4 || n == NET_IPV6; @@ -1511,9 +1511,10 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) strSubVersion.size(), MAX_SUBVERSION_LENGTH)); } - if (args.IsArgSet("-onlynet")) { + const auto onlynets = args.GetArgs("-onlynet"); + if (!onlynets.empty()) { g_reachable_nets.RemoveAll(); - for (const std::string& snet : args.GetArgs("-onlynet")) { + for (const std::string& snet : onlynets) { enum Network net = ParseNetwork(snet); if (net == NET_UNROUTABLE) return InitError(strprintf(_("Unknown network specified in -onlynet: '%s'"), snet)); @@ -1522,7 +1523,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) } if (!args.IsArgSet("-cjdnsreachable")) { - if (args.IsArgSet("-onlynet") && g_reachable_nets.Contains(NET_CJDNS)) { + if (!onlynets.empty() && g_reachable_nets.Contains(NET_CJDNS)) { return InitError( _("Outbound connections restricted to CJDNS (-onlynet=cjdns) but " "-cjdnsreachable is not provided")); @@ -1573,7 +1574,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) onion_proxy = addrProxy; } - const bool onlynet_used_with_onion{args.IsArgSet("-onlynet") && g_reachable_nets.Contains(NET_ONION)}; + const bool onlynet_used_with_onion{!onlynets.empty() && g_reachable_nets.Contains(NET_ONION)}; // -onion can be used to set only a proxy for .onion, or override normal proxy for .onion addresses // -noonion (or -onion=0) disables connecting to .onion entirely @@ -2018,7 +2019,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) } SetProxy(NET_I2P, Proxy{addr.value()}); } else { - if (args.IsArgSet("-onlynet") && g_reachable_nets.Contains(NET_I2P)) { + if (!onlynets.empty() && g_reachable_nets.Contains(NET_I2P)) { return InitError( _("Outbound connections restricted to i2p (-onlynet=i2p) but " "-i2psam is not provided")); diff --git a/src/torcontrol.cpp b/src/torcontrol.cpp index 407d6085aae..17c51cd8e02 100644 --- a/src/torcontrol.cpp +++ b/src/torcontrol.cpp @@ -403,7 +403,7 @@ void TorController::get_socks_cb(TorControlConnection& _conn, const TorControlRe const auto onlynets = gArgs.GetArgs("-onlynet"); const bool onion_allowed_by_onlynet{ - !gArgs.IsArgSet("-onlynet") || + onlynets.empty() || std::any_of(onlynets.begin(), onlynets.end(), [](const auto& n) { return ParseNetwork(n) == NET_ONION; })};