From 7658055c4e97b998639b67fd6dca386c1cdc748a Mon Sep 17 00:00:00 2001 From: brunoerg Date: Wed, 25 May 2022 15:16:22 -0300 Subject: rpc: fix inappropriate warning for address type p2sh-segwit in createmultisig and addmultisigaddress Github-Pull: #25220 Rebased-From: eaf6f630c0190c634b5f1c85f749437f4209cc36 --- src/rpc/misc.cpp | 4 ++-- src/wallet/rpc/addresses.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 8d7b48d697..2dace52777 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -169,11 +169,11 @@ static RPCHelpMan createmultisig() result.pushKV("descriptor", descriptor->ToString()); UniValue warnings(UniValue::VARR); - if (!request.params[2].isNull() && OutputTypeFromDestination(dest) != output_type) { + if (descriptor->GetOutputType() != output_type) { // Only warns if the user has explicitly chosen an address type we cannot generate warnings.push_back("Unable to make chosen address type, please ensure no uncompressed public keys are present."); } - if (warnings.size()) result.pushKV("warnings", warnings); + if (!warnings.empty()) result.pushKV("warnings", warnings); return result; }, diff --git a/src/wallet/rpc/addresses.cpp b/src/wallet/rpc/addresses.cpp index 51587a64a3..bb9d2aea9b 100644 --- a/src/wallet/rpc/addresses.cpp +++ b/src/wallet/rpc/addresses.cpp @@ -302,11 +302,11 @@ RPCHelpMan addmultisigaddress() result.pushKV("descriptor", descriptor->ToString()); UniValue warnings(UniValue::VARR); - if (!request.params[3].isNull() && OutputTypeFromDestination(dest) != output_type) { + if (descriptor->GetOutputType() != output_type) { // Only warns if the user has explicitly chosen an address type we cannot generate warnings.push_back("Unable to make chosen address type, please ensure no uncompressed public keys are present."); } - if (warnings.size()) result.pushKV("warnings", warnings); + if (!warnings.empty()) result.pushKV("warnings", warnings); return result; }, -- cgit v1.2.3 From 4ebf6e35dcac936342525ec7b4b77a82c71693e7 Mon Sep 17 00:00:00 2001 From: Martin Zumsande Date: Wed, 8 Jun 2022 15:22:41 -0400 Subject: p2p: always set nTime for self-advertisements If we self-advertised to an inbound peer with the address they gave us, nTime was left default-initialized, so that our peer wouldn't relay it any further along. Github-Pull: #25314 Rebased-From: 99b9e5f3a9fa29bbc1e45fc958470fbcc207ef23 --- src/net.cpp | 2 +- src/test/net_tests.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/net.cpp b/src/net.cpp index 955eec46e3..1b0e7369a3 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -249,7 +249,7 @@ std::optional GetLocalAddrForPeer(CNode *pnode) if (pnode->IsInboundConn()) { // For inbound connections, assume both the address and the port // as seen from the peer. - addrLocal = CAddress{pnode->GetAddrLocal(), addrLocal.nServices}; + addrLocal = CAddress{pnode->GetAddrLocal(), addrLocal.nServices, addrLocal.nTime}; } else { // For outbound connections, assume just the address as seen from // the peer and leave the port in `addrLocal` as returned by diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp index fcb1a80765..74e97ff67a 100644 --- a/src/test/net_tests.cpp +++ b/src/test/net_tests.cpp @@ -675,10 +675,13 @@ BOOST_AUTO_TEST_CASE(get_local_addr_for_peer_port) const uint16_t bind_port = 20001; m_node.args->ForceSetArg("-bind", strprintf("3.4.5.6:%u", bind_port)); + const uint32_t current_time = static_cast(GetAdjustedTime()); + SetMockTime(current_time); + // Our address:port as seen from the peer, completely different from the above. in_addr peer_us_addr; peer_us_addr.s_addr = htonl(0x02030405); - const CAddress peer_us{CService{peer_us_addr, 20002}, NODE_NETWORK}; + const CAddress peer_us{CService{peer_us_addr, 20002}, NODE_NETWORK, current_time}; // Create a peer with a routable IPv4 address (outbound). in_addr peer_out_in_addr; @@ -699,7 +702,7 @@ BOOST_AUTO_TEST_CASE(get_local_addr_for_peer_port) // Without the fix peer_us:8333 is chosen instead of the proper peer_us:bind_port. auto chosen_local_addr = GetLocalAddrForPeer(&peer_out); BOOST_REQUIRE(chosen_local_addr); - const CService expected{peer_us_addr, bind_port}; + const CAddress expected{CService{peer_us_addr, bind_port}, NODE_NETWORK, current_time}; BOOST_CHECK(*chosen_local_addr == expected); // Create a peer with a routable IPv4 address (inbound). -- cgit v1.2.3