Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#29239: rpc: Make v2transport default for addnod…
Browse files Browse the repository at this point in the history
…e RPC when enabled

3ba815b Make v2transport default for addnode RPC when enabled (Pieter Wuille)

Pull request description:

  Since #29058, several types of manually configured connections will attempt v2 connections when `-v2transport` is enabled, except for the `addnode` RPC, as that one has an explicit argument to enable or disable.

  Make the default for that RPC match the `-v2transport` setting so the behavior matches that of other manual connections from a user perspective.

ACKs for top commit:
  achow101:
    ACK 3ba815b
  kristapsk:
    ACK 3ba815b
  theStack:
    Code-review ACK 3ba815b

Tree-SHA512: 31ef48cf1e533abb17866020378c004df929e626074dc98b3229fb60a66de58435e95c8fda8d1b463e1208aa39d1f42d239818e7e58595a3738089920598befc
  • Loading branch information
achow101 committed Jan 16, 2024
2 parents a3fb1f8 + 3ba815b commit 8106b26
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
7 changes: 4 additions & 3 deletions src/rpc/net.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ static RPCHelpMan addnode()
{
{"node", RPCArg::Type::STR, RPCArg::Optional::NO, "The address of the peer to connect to"},
{"command", RPCArg::Type::STR, RPCArg::Optional::NO, "'add' to add a node to the list, 'remove' to remove a node from the list, 'onetry' to try a connection to the node once"},
{"v2transport", RPCArg::Type::BOOL, RPCArg::Default{false}, "Attempt to connect using BIP324 v2 transport protocol (ignored for 'remove' command)"},
{"v2transport", RPCArg::Type::BOOL, RPCArg::DefaultHint{"set by -v2transport"}, "Attempt to connect using BIP324 v2 transport protocol (ignored for 'remove' command)"},
},
RPCResult{RPCResult::Type::NONE, "", ""},
RPCExamples{
Expand All @@ -332,9 +332,10 @@ static RPCHelpMan addnode()
CConnman& connman = EnsureConnman(node);

const std::string node_arg{request.params[0].get_str()};
bool use_v2transport = self.Arg<bool>(2);
bool node_v2transport = connman.GetLocalServices() & NODE_P2P_V2;
bool use_v2transport = self.MaybeArg<bool>(2).value_or(node_v2transport);

if (use_v2transport && !(node.connman->GetLocalServices() & NODE_P2P_V2)) {
if (use_v2transport && !node_v2transport) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Error: v2transport requested but not enabled (see -v2transport)");
}

Expand Down
6 changes: 3 additions & 3 deletions test/functional/test_framework/test_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -602,10 +602,10 @@ def connect_nodes(self, a, b, *, peer_advertises_v2=None, wait_for_connect: bool
if peer_advertises_v2 is None:
peer_advertises_v2 = from_connection.use_v2transport

if peer_advertises_v2:
from_connection.addnode(node=ip_port, command="onetry", v2transport=True)
if peer_advertises_v2 != from_connection.use_v2transport:
from_connection.addnode(node=ip_port, command="onetry", v2transport=peer_advertises_v2)
else:
# skip the optional third argument (default false) for
# skip the optional third argument if it matches the default, for
# compatibility with older clients
from_connection.addnode(ip_port, "onetry")

Expand Down

0 comments on commit 8106b26

Please sign in to comment.