diff options
author | merge-script <fanquake@gmail.com> | 2025-03-18 08:38:18 +0800 |
---|---|---|
committer | merge-script <fanquake@gmail.com> | 2025-03-18 08:38:18 +0800 |
commit | d6db87165c6dc2123a759c79ec236ea1ed90c0e3 (patch) | |
tree | 6aaa7c155bb64ac472f72bb6dbc39ba6d1a30efb | |
parent | e9e6825b8cbe7b98ee07d068b78f84597e3a9652 (diff) | |
parent | 74df31cb0bdef9cce31ae62ed71a1e386cba0274 (diff) |
Merge bitcoin/bitcoin#32062: [29.x] backports and rc2v29.0rc2
74df31cb0bdef9cce31ae62ed71a1e386cba0274 [doc] update example bitcoin.conf with missing options (glozow)
8082f88d1a434b3ba1018c6592affe759d53df48 [doc] update man pages for 29.0rc2 (glozow)
472d582bfec4dcdecb5f4d9bbbe41ea7961ca62b [build] bump to 29.0rc2 (glozow)
a4c30bd00a0ec977a1518416cdf7f0a24868a9f2 qt: doc: adapt outdated binary paths to CMake changes (Sebastian Falbesoner)
4e438d326ea55ac0f98f89e41e69b56354e801e7 build: use make < 3.82 syntax for define directive (Sjors Provoost)
7ff0b02161a1687b8bee6af0ff93ec65bbfc6cf2 build: Remove manpages when making MacOS app (Ava Chow)
5ebcb59fdb1270edac6b878d7bd97dd1f077aa06 test: fix intermittent failure in p2p_orphan_handling.py (Martin Zumsande)
458655bca8eddd4d913958c579a46a6fca23cbf6 fuzz: make sure DecodeBase58(Check) is called with valid values more often (Lőrinc)
15ecae31a83ea66985496d2b8f2017cbd7749c26 fuzz: Always restrict base conversion input lengths (Lőrinc)
80c5d57bd118b1812c21604224dd316214af879c contrib: Fix `gen-bitcoin-conf.sh`. (David Gumberg)
Pull request description:
backports:
- #32049
- #32063
- #32064
- #32070
- #31917
ACKs for top commit:
Sjors:
ACK 74df31cb0bdef9cce31ae62ed71a1e386cba0274
hebasto:
ACK 74df31cb0bdef9cce31ae62ed71a1e386cba0274, I have reviewed the code and it looks OK.
ismaelsadeeq:
Code review ACK 74df31cb0bdef9cce31ae62ed71a1e386cba0274
Tree-SHA512: df4ef832a03c9c3f89d30d3f65d81b7c7e4793d2cad8a269f1ff221454a4b0b05e06109f4556926c1c4f7fcbd2537052b4d58b4b3911dfcfc35726c600b587d9
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | cmake/module/Maintenance.cmake | 1 | ||||
-rwxr-xr-x | contrib/devtools/gen-bitcoin-conf.sh | 3 | ||||
-rw-r--r-- | depends/packages/capnp.mk | 2 | ||||
-rw-r--r-- | depends/packages/libmultiprocess.mk | 2 | ||||
-rw-r--r-- | doc/man/bitcoin-cli.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-qt.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-tx.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-util.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-wallet.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoind.1 | 6 | ||||
-rw-r--r-- | share/examples/bitcoin.conf | 79 | ||||
-rw-r--r-- | src/qt/README.md | 2 | ||||
-rw-r--r-- | src/qt/test/wallettests.cpp | 6 | ||||
-rw-r--r-- | src/test/fuzz/base_encode_decode.cpp | 51 | ||||
-rwxr-xr-x | test/functional/p2p_orphan_handling.py | 1 |
16 files changed, 130 insertions, 55 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ad29249e9..8b7e663134 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ set(CLIENT_NAME "Bitcoin Core") set(CLIENT_VERSION_MAJOR 29) set(CLIENT_VERSION_MINOR 0) set(CLIENT_VERSION_BUILD 0) -set(CLIENT_VERSION_RC 1) +set(CLIENT_VERSION_RC 2) set(CLIENT_VERSION_IS_RELEASE "true") set(COPYRIGHT_YEAR "2025") diff --git a/cmake/module/Maintenance.cmake b/cmake/module/Maintenance.cmake index a1ae7c9e8f..59e26d1bc1 100644 --- a/cmake/module/Maintenance.cmake +++ b/cmake/module/Maintenance.cmake @@ -83,6 +83,7 @@ function(add_macos_deploy_target) COMMAND ${CMAKE_COMMAND} --install ${PROJECT_BINARY_DIR} --config $<CONFIG> --component bitcoin-qt --prefix ${macos_app}/Contents/MacOS --strip COMMAND ${CMAKE_COMMAND} -E rename ${macos_app}/Contents/MacOS/bin/$<TARGET_FILE_NAME:bitcoin-qt> ${macos_app}/Contents/MacOS/Bitcoin-Qt COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/bin + COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/share VERBATIM ) diff --git a/contrib/devtools/gen-bitcoin-conf.sh b/contrib/devtools/gen-bitcoin-conf.sh index 234318e1a1..d31f546295 100755 --- a/contrib/devtools/gen-bitcoin-conf.sh +++ b/contrib/devtools/gen-bitcoin-conf.sh @@ -50,7 +50,8 @@ EOF # adding newlines is a bit funky to ensure portability for BSD # see here for more details: https://stackoverflow.com/a/24575385 ${BITCOIND} --help \ - | sed '1,/Print this help message and exit/d' \ + | sed '1,/Options:/d' \ + | sed -E '/^[[:space:]]{2}-help/,/^[[:space:]]*$/d' \ | sed -E 's/^[[:space:]]{2}\-/#/' \ | sed -E 's/^[[:space:]]{7}/# /' \ | sed -E '/[=[:space:]]/!s/#.*$/&=1/' \ diff --git a/depends/packages/capnp.mk b/depends/packages/capnp.mk index 7f41d3b5a4..542bf12629 100644 --- a/depends/packages/capnp.mk +++ b/depends/packages/capnp.mk @@ -5,7 +5,7 @@ $(package)_download_file=$(native_$(package)_download_file) $(package)_file_name=$(native_$(package)_file_name) $(package)_sha256_hash=$(native_$(package)_sha256_hash) -define $(package)_set_vars := +define $(package)_set_vars $(package)_config_opts := -DBUILD_TESTING=OFF $(package)_config_opts += -DWITH_OPENSSL=OFF $(package)_config_opts += -DWITH_ZLIB=OFF diff --git a/depends/packages/libmultiprocess.mk b/depends/packages/libmultiprocess.mk index afbd315e38..47064a9bb6 100644 --- a/depends/packages/libmultiprocess.mk +++ b/depends/packages/libmultiprocess.mk @@ -8,7 +8,7 @@ ifneq ($(host),$(build)) $(package)_dependencies += native_capnp endif -define $(package)_set_vars := +define $(package)_set_vars ifneq ($(host),$(build)) $(package)_config_opts := -DCAPNP_EXECUTABLE="$$(native_capnp_prefixbin)/capnp" $(package)_config_opts += -DCAPNPC_CXX_EXECUTABLE="$$(native_capnp_prefixbin)/capnpc-c++" diff --git a/doc/man/bitcoin-cli.1 b/doc/man/bitcoin-cli.1 index 2eb89ffa08..94d06025c3 100644 --- a/doc/man/bitcoin-cli.1 +++ b/doc/man/bitcoin-cli.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc1" "User Commands" +.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc2" "User Commands" .SH NAME -bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc1 +bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc2 .SH SYNOPSIS .B bitcoin-cli [\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] @@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc1 .B bitcoin-cli [\fI\,options\/\fR] \fI\,help <command>\/\fR .SH DESCRIPTION -Bitcoin Core RPC client version v29.0.0rc1 +Bitcoin Core RPC client version v29.0.0rc2 .PP The bitcoin\-cli utility provides a command line interface to interact with a Bitcoin Core RPC server. .PP diff --git a/doc/man/bitcoin-qt.1 b/doc/man/bitcoin-qt.1 index 20b7b96e3e..58640975b8 100644 --- a/doc/man/bitcoin-qt.1 +++ b/doc/man/bitcoin-qt.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc1" "User Commands" +.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc2" "User Commands" .SH NAME -bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc1 +bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc2 .SH SYNOPSIS .B bitcoin-qt [\fI\,options\/\fR] [\fI\,URI\/\fR] .SH DESCRIPTION -Bitcoin Core version v29.0.0rc1 +Bitcoin Core version v29.0.0rc2 .PP The bitcoin\-qt application provides a graphical interface for interacting with Bitcoin Core. .PP diff --git a/doc/man/bitcoin-tx.1 b/doc/man/bitcoin-tx.1 index b493f916b0..7d4f7de5a3 100644 --- a/doc/man/bitcoin-tx.1 +++ b/doc/man/bitcoin-tx.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc1" "User Commands" +.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc2" "User Commands" .SH NAME -bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc1 +bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc2 .SH SYNOPSIS .B bitcoin-tx [\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] @@ -9,7 +9,7 @@ bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc1 .B bitcoin-tx [\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] .SH DESCRIPTION -Bitcoin Core bitcoin\-tx utility version v29.0.0rc1 +Bitcoin Core bitcoin\-tx utility version v29.0.0rc2 .PP The bitcoin\-tx tool is used for creating and modifying bitcoin transactions. .PP diff --git a/doc/man/bitcoin-util.1 b/doc/man/bitcoin-util.1 index 74cf2329ed..44ff8e860a 100644 --- a/doc/man/bitcoin-util.1 +++ b/doc/man/bitcoin-util.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc1" "User Commands" +.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc2" "User Commands" .SH NAME -bitcoin-util \- manual page for bitcoin-util v29.0.0rc1 +bitcoin-util \- manual page for bitcoin-util v29.0.0rc2 .SH SYNOPSIS .B bitcoin-util [\fI\,options\/\fR] [\fI\,command\/\fR] @@ -9,7 +9,7 @@ bitcoin-util \- manual page for bitcoin-util v29.0.0rc1 .B bitcoin-util [\fI\,options\/\fR] \fI\,grind <hex-block-header>\/\fR .SH DESCRIPTION -Bitcoin Core bitcoin\-util utility version v29.0.0rc1 +Bitcoin Core bitcoin\-util utility version v29.0.0rc2 .PP The bitcoin\-util tool provides bitcoin related functionality that does not rely on the ability to access a running node. Available [commands] are listed below. .SH OPTIONS diff --git a/doc/man/bitcoin-wallet.1 b/doc/man/bitcoin-wallet.1 index dbf3010070..b41d5e965e 100644 --- a/doc/man/bitcoin-wallet.1 +++ b/doc/man/bitcoin-wallet.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc1" "User Commands" +.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc2" "User Commands" .SH NAME -bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc1 +bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc2 .SH SYNOPSIS .B bitcoin-wallet [\fI\,options\/\fR] \fI\,<command>\/\fR .SH DESCRIPTION -Bitcoin Core bitcoin\-wallet utility version v29.0.0rc1 +Bitcoin Core bitcoin\-wallet utility version v29.0.0rc2 .PP bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files. .PP diff --git a/doc/man/bitcoind.1 b/doc/man/bitcoind.1 index 865a59e87c..b5993a052a 100644 --- a/doc/man/bitcoind.1 +++ b/doc/man/bitcoind.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc1" "User Commands" +.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc2" "User Commands" .SH NAME -bitcoind \- manual page for bitcoind v29.0.0rc1 +bitcoind \- manual page for bitcoind v29.0.0rc2 .SH SYNOPSIS .B bitcoind [\fI\,options\/\fR] .SH DESCRIPTION -Bitcoin Core daemon version v29.0.0rc1 +Bitcoin Core daemon version v29.0.0rc2 .PP The Bitcoin Core daemon (bitcoind) is a headless program that connects to the Bitcoin network to validate and relay transactions and blocks, as well as relaying addresses. .PP diff --git a/share/examples/bitcoin.conf b/share/examples/bitcoin.conf index 5b0003b723..d3999ecb4a 100644 --- a/share/examples/bitcoin.conf +++ b/share/examples/bitcoin.conf @@ -12,6 +12,82 @@ ### Options +# Execute command when an alert is raised (%s in cmd is replaced by +# message) +#alertnotify=<cmd> + +# For backwards compatibility, treat an unused bitcoin.conf file in the +# datadir as a warning, not an error. +#allowignoredconf=1 + +# If this block is in the chain assume that it and its ancestors are valid +# and potentially skip their script verification (0 to verify all, +# default: +# 00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77, +# testnet3: +# 00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57, +# testnet4: +# 0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3, +# signet: +# 000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a) +#assumevalid=<hex> + +# Maintain an index of compact filters by block (default: 0, values: +# basic). If <type> is not supplied or if <type> = 1, indexes for +# all known types are enabled. +#blockfilterindex=<type> + +# Execute command when the best block changes (%s in cmd is replaced by +# block hash) +#blocknotify=<cmd> + +# Extra transactions to keep in memory for compact block reconstructions +# (default: 100) +#blockreconstructionextratxn=<n> + +# Specify directory to hold blocks subdirectory for *.dat files (default: +# <datadir>) +#blocksdir=<dir> + +# Whether to reject transactions from network peers. Disables automatic +# broadcast and rebroadcast of transactions, unless the source peer +# has the 'forcerelay' permission. RPC transactions are not +# affected. (default: 0) +#blocksonly=1 + +# Whether an XOR-key applies to blocksdir *.dat files. The created XOR-key +# will be zeros for an existing blocksdir or when `-blocksxor=0` is +# set, and random for a freshly initialized blocksdir. (default: 1) +#blocksxor=1 + +# Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0) +#coinstatsindex=1 + +# Specify path to read-only configuration file. Relative paths will be +# prefixed by datadir location (only useable from command line, not +# configuration file) (default: bitcoin.conf) +#conf=<file> + +# Run in the background as a daemon and accept commands (default: 0) +#daemon=1 + +# Wait for initialization to be finished before exiting. This implies +# -daemon (default: 0) +#daemonwait=1 + +# Specify data directory +#datadir=<dir> + +# Maximum database cache size <n> MiB (minimum 4, default: 450). Make sure +# you have enough RAM. In addition, unused memory allocated to the +# mempool is shared with this cache (see -maxmempool). +#dbcache=<n> + +# Specify location of debug log file (default: debug.log). Relative paths +# will be prefixed by a net-specific datadir location. Pass +# -nodebuglogfile to disable writing the log to a file. +#debuglogfile=<file> + # Specify additional configuration file, relative to the -datadir path # (only useable from configuration file, not command line) #includeconf=<file> @@ -428,9 +504,6 @@ # takes priority over "-debug" #debugexclude=<category> -# Print help message with debugging options and exit -#help-debug=1 - # Include IP addresses in debug output (default: 0) #logips=1 diff --git a/src/qt/README.md b/src/qt/README.md index 1fcac5414f..4a662b2a12 100644 --- a/src/qt/README.md +++ b/src/qt/README.md @@ -120,5 +120,5 @@ sudo apt-get install qtcreator - Under `Debuggers`: select `"GDB"` as debugger 8. While in the `Projects` tab, ensure that you have the `bitcoin-qt` executable specified under `Run` - - If the executable is not specified: click `"Choose..."`, navigate to `src/qt`, and select `bitcoin-qt` + - If the executable is not specified: click `"Choose..."`, navigate to `build/bin`, and select `bitcoin-qt` 9. You're all set! Start developing, building, and debugging the Bitcoin Core GUI diff --git a/src/qt/test/wallettests.cpp b/src/qt/test/wallettests.cpp index 98dfe12f08..816d47fed4 100644 --- a/src/qt/test/wallettests.cpp +++ b/src/qt/test/wallettests.cpp @@ -268,9 +268,9 @@ public: // // This also requires overriding the default minimal Qt platform: // -// QT_QPA_PLATFORM=xcb src/qt/test/test_bitcoin-qt # Linux -// QT_QPA_PLATFORM=windows src/qt/test/test_bitcoin-qt # Windows -// QT_QPA_PLATFORM=cocoa src/qt/test/test_bitcoin-qt # macOS +// QT_QPA_PLATFORM=xcb build/bin/test_bitcoin-qt # Linux +// QT_QPA_PLATFORM=windows build/bin/test_bitcoin-qt # Windows +// QT_QPA_PLATFORM=cocoa build/bin/test_bitcoin-qt # macOS void TestGUI(interfaces::Node& node, const std::shared_ptr<CWallet>& wallet) { // Create widgets for sending coins and listing transactions. diff --git a/src/test/fuzz/base_encode_decode.cpp b/src/test/fuzz/base_encode_decode.cpp index 06b249fb8d..2ffcbdf720 100644 --- a/src/test/fuzz/base_encode_decode.cpp +++ b/src/test/fuzz/base_encode_decode.cpp @@ -6,6 +6,7 @@ #include <base58.h> #include <psbt.h> +#include <span.h> #include <test/fuzz/FuzzedDataProvider.h> #include <util/strencodings.h> #include <util/string.h> @@ -19,42 +20,40 @@ using util::TrimStringView; FUZZ_TARGET(base58_encode_decode) { - FuzzedDataProvider provider(buffer.data(), buffer.size()); - const std::string random_string{provider.ConsumeRandomLengthString(1000)}; - const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)}; + FuzzedDataProvider provider{buffer.data(), buffer.size()}; + const auto random_string{provider.ConsumeRandomLengthString(100)}; - // Decode/Encode roundtrip - std::vector<unsigned char> decoded; - if (DecodeBase58(random_string, decoded, max_ret_len)) { + const auto encoded{EncodeBase58(MakeUCharSpan(random_string))}; + const auto decode_input{provider.ConsumeBool() ? random_string : encoded}; + const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, decode_input.size() + 1)}; + if (std::vector<unsigned char> decoded; DecodeBase58(decode_input, decoded, max_ret_len)) { const auto encoded_string{EncodeBase58(decoded)}; - assert(encoded_string == TrimStringView(random_string)); - assert(encoded_string.empty() || !DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1))); + assert(encoded_string == TrimStringView(decode_input)); + if (decoded.size() > 0) { + assert(max_ret_len > 0); + assert(decoded.size() <= static_cast<size_t>(max_ret_len)); + assert(!DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1))); + } } - // Encode/Decode roundtrip - const auto encoded{EncodeBase58(buffer)}; - std::vector<unsigned char> roundtrip_decoded; - assert(DecodeBase58(encoded, roundtrip_decoded, buffer.size()) - && std::ranges::equal(roundtrip_decoded, buffer)); } FUZZ_TARGET(base58check_encode_decode) { - FuzzedDataProvider provider(buffer.data(), buffer.size()); - const std::string random_string{provider.ConsumeRandomLengthString(1000)}; - const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)}; + FuzzedDataProvider provider{buffer.data(), buffer.size()}; + const auto random_string{provider.ConsumeRandomLengthString(100)}; - // Decode/Encode roundtrip - std::vector<unsigned char> decoded; - if (DecodeBase58Check(random_string, decoded, max_ret_len)) { + const auto encoded{EncodeBase58Check(MakeUCharSpan(random_string))}; + const auto decode_input{provider.ConsumeBool() ? random_string : encoded}; + const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, decode_input.size() + 1)}; + if (std::vector<unsigned char> decoded; DecodeBase58Check(decode_input, decoded, max_ret_len)) { const auto encoded_string{EncodeBase58Check(decoded)}; - assert(encoded_string == TrimStringView(random_string)); - assert(encoded_string.empty() || !DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1))); + assert(encoded_string == TrimStringView(decode_input)); + if (decoded.size() > 0) { + assert(max_ret_len > 0); + assert(decoded.size() <= static_cast<size_t>(max_ret_len)); + assert(!DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1))); + } } - // Encode/Decode roundtrip - const auto encoded{EncodeBase58Check(buffer)}; - std::vector<unsigned char> roundtrip_decoded; - assert(DecodeBase58Check(encoded, roundtrip_decoded, buffer.size()) - && std::ranges::equal(roundtrip_decoded, buffer)); } FUZZ_TARGET(base32_encode_decode) diff --git a/test/functional/p2p_orphan_handling.py b/test/functional/p2p_orphan_handling.py index 370caad880..d74a866ae5 100755 --- a/test/functional/p2p_orphan_handling.py +++ b/test/functional/p2p_orphan_handling.py @@ -788,6 +788,7 @@ class OrphanHandlingTest(BitcoinTestFramework): # Disconnect peer1. peer2 should become the new candidate for orphan resolution. peer1.peer_disconnect() + self.wait_until(lambda: node.num_test_p2p_connections() == 1) node.bumpmocktime(TXREQUEST_TIME_SKIP) self.wait_until(lambda: len(node.getorphantxs(verbosity=2)[0]["from"]) == 1) # Both parents should be requested, now that they are both missing. |