This patch improves performance and resource usage around IP
addresses that are banned for misbehavior. They're already not
actually banned, as connections from them are still allowed,
but they are preferred for eviction if the inbound connection
slots are full.
Stop treating these like manually banned IP ranges, and instead
just keep them in a rolling Bloom filter of misbehaving nodes,
which isn't persisted to disk or exposed through the ban
framework. The effect remains the same: preferred for eviction,
avoided for outgoing connections, and not relayed to other peers.
Also change the name of this mechanism to better reflect reality;
they're not banned, just discouraged.
Contains release notes and several interface improvements by
John Newbery.
Github-Pull: #19219
Rebased-From: b691f2df5f7d443c0c9ee056ab94aa0fc19566d5
This has been removed from the master branch, and always seems to fail
at the installing packages phase. i.e:
```bash
pkg install -y autoconf automake boost-libs git gmake libevent libtool pkgconf python3 ccache
Updating FreeBSD repository catalogue...
Fetching meta.txz: . done
pkg: repository meta /var/db/pkg/FreeBSD.meta has wrong version 2
repository FreeBSD has no meta file, using default settings
Fetching packagesite.txz: .......... done
pkg: repository meta /var/db/pkg/FreeBSD.meta has wrong version 2
pkg: Repository FreeBSD load error: meta cannot be loaded No error: 0
Unable to open created repository FreeBSD
Unable to update repository FreeBSD
Error updating repositories!
Exit status: 3
```
Offline signers will always need a non_witness_utxo so make sure it is
there.
Github-Pull: #19215
Rebased-From: 46004790588c24174a0bec49b540d158ce163ffd
This fix is a based on the fix by Antoine Riard <ariard@student.42.fr> in
https://github.com/bitcoin/bitcoin/pull/18600.
Unlike that PR, which implements some new behavior, this just restores previous
wallet notification and status behavior for transactions removed from the
mempool because they conflict with transactions in a block. The behavior was
accidentally changed in two `CWallet::BlockConnected` updates:
a31be09bfd77eed497a8e251d31358e16e2f2eb1 and
7e89994133725125dddbfa8d45484e3b9ed51c6e from
https://github.com/bitcoin/bitcoin/pull/16624, causing issue
https://github.com/bitcoin/bitcoin/issues/18325.
The change here could be improved and replaced with a more comprehensive
cleanup, so it includes a detailed comment explaining future considerations.
Fixes#18325
Co-authored-by: Antoine Riard <ariard@student.42.fr>
Github-Pull: #18982
Rebased-From: b604c5c8b5892842f13dee89ae31812a28ab25d1
These haven't been updated since their addition, so this updates the list that
controls which qt base translations are bundled with the macOS binary, to all the
languages that are available with qt 5.9.8.
This could probably be improved in some way, however qt updates are infrequent,
and I didn't want to spend any more time looking at this. Also given that no-one
seems to have noticed and/or reported this it wouldn't seem high-priority.
Could be backported to 0.20.1.
Github-Pull: #19059
Rebased-From: 69bfcac27a83440092bc6e61904ded910ed4baf4
Pthread library does not set errno.
Pthread library's errno is returned by return value.
Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Github-Pull: #19194
Rebased-From: cb38b069b0f41b1a26264784b1c1303c8ac6ab08
384d3f991c9bdeec6eb4685df5918877dbbe7634 Add missing QPainterPath include (Andrew Chow)
Pull request description:
This is needed to compile with Qt 5.15.
Github-Pull: #19097
Rebased-From: 79b0a69e09c1a912122e6431ea3c530cc292c690
Top commit has no ACKs.
Tree-SHA512: 23c4604cddb0bf5955afa6dfb6be87989df591e5f5ca5b85257c72e916f29337012b24c9ab5374a3289700ab7518ddb48f21195a2173ea1f935d69bd2ad13b8b
412d5fe8791c417bf46fc55a5bb8d59be98a33db QA: feature_segwit: Check that template "rules" includes "!segwit" as appropriate (Luke Dashjr)
2abe8cc3b760219cfa434e4c96e9f8d3611d0037 Bugfix: Include "csv","!segwit" in "rules" (Luke Dashjr)
Pull request description:
Original branch merges cleanly (no rebase needed)
See also #17946
ACKs for top commit:
jnewbery:
utACK 412d5fe8791c417bf46fc55a5bb8d59be98a33db
Tree-SHA512: 8b269f7782c10f02dc245cc377d91f594474eade6a32184a49fa2ed3928d91917e4b83eefee6947bfb5ffff54eca2781f8cf2169c1f0ad3fefca1d4b3cf304dd
1dfad4259558a3bc7d2d4f344321de729113a3d9 doc: Merge 0.20.0 release notes from wiki (Wladimir J. van der Laan)
Pull request description:
Need to do this before -final.
ACKs for top commit:
fanquake:
ACK 1dfad4259558a3bc7d2d4f344321de729113a3d9
Tree-SHA512: 5db5a9ed8860b78941ebf0e1d966564ac0e2914fd18fc0c2f4e7a32d78306c1bb1aa2fd416e1fb01d427ff69c698a019498fc94a6e580c5d84a53c0716e675f1
245c862cfd4883ea91b53d766abb00a9c3c1ea5c test: disable script fuzz tests (fanquake)
9a8fb4cf4ba472a5c3e1b9b71d31673f881a4896 fuzz: Remove enumeration of expected deserialization exceptions in ProcessMessage(...) fuzzer (practicalswift)
6161c94a6108ebddafe4e95c14bde4cdc3f8c01c [net processing] Only send a getheaders for one block in an INV (John Newbery)
cf2a6e2a390ad18a616d7f2718688375f2576577 test: Remove const to work around compiler error on xenial (Wladimir J. van der Laan)
cc7d34465bbb0195d8bcd9143097840a2e9765f2 miner: Avoid stack-use-after-return in validationinterface (MarcoFalke)
37a620748bd3578eda1c74daad8df8451d13b989 test: Add unregister_validation_interface_race test (MarcoFalke)
ff4dc2075031e9a49220cc27a270aeabe8954989 gui: Fix manual coin control with multiple wallets loaded (João Barbosa)
ed0afe8c1ff37926cc5bdcb0e8e4983e194e6d61 test: Add test for conflicted wallet tx notifications (Russell Yanofsky)
251e321ad7d9ddb938e8a07ddfbe90739f0bafdd rpc: Relock wallet only if most recent callback (João Barbosa)
ca4dac48c5675af3fc53db6740a0b70fef622b0a rpc: Add mutex to guard deadlineTimers (João Barbosa)
a3fe458a1e477cacd19e7e0edb8e7bb965067115 [docs] Improve commenting in ProcessGetData() (John Newbery)
011532e380bb1a42eac9e79a17b35531f768becf [test] test that an invalid GETDATA doesn't prevent processing of future messages (Amiti Uttarwar)
1e73d7248a10863dc99a93f1db36d035c17f29d7 [net processing] ignore unknown INV types in GETDATA messages (Amiti Uttarwar)
fb821731eb12906996bffdf4b3633d7fe47c85a7 [net processing] ignore tx GETDATA from blocks-only peers (Amiti Uttarwar)
315ae14f3f5c98ae4c4476e4bb260b9086c773a4 gui: Fix itemWalletAddress leak when not tree mode (João Barbosa)
Pull request description:
Backports the following PRs to the 0.20 branch:
* https://github.com/bitcoin/bitcoin/pull/18578: gui: Fix leak in CoinControlDialog::updateView
* https://github.com/bitcoin/bitcoin/pull/18808: [net processing] Drop unknown types in getdata
* https://github.com/bitcoin/bitcoin/pull/18814: rpc: Relock wallet only if most recent callback
* https://github.com/bitcoin/bitcoin/pull/18878: test: Add test for conflicted wallet tx notifications
* https://github.com/bitcoin/bitcoin/pull/18894: gui: Fix manual coin control with multiple wallets loaded
* https://github.com/bitcoin/bitcoin/pull/18742: miner: Avoid stack-use-after-return in validationinterface
* https://github.com/bitcoin/bitcoin/pull/18962: net processing: Only send a getheaders for one block in an INV
* https://github.com/bitcoin/bitcoin/pull/18975: test: Remove const to work around compiler error on xenial
ACKs for top commit:
promag:
Tested ACK 245c862cfd4883ea91b53d766abb00a9c3c1ea5c coin control with multiple wallets.
laanwj:
ACK 245c862cfd4883ea91b53d766abb00a9c3c1ea5c
MarcoFalke:
ACK 245c862cfd solved the conflicts myself as a sanity check. Did not re-review 🍷
Tree-SHA512: 285e5a5fad5bbeba6032742c65dc68836e8eccfcceda9e69fec4ddd162a3f61679a96f9bbe3d434267835af67c21ac4c05accf6f63e827c2eb47203c6daafe31
Headers-first is the primary method of announcement on the network. If a
node fell back sending blocks by inv, it's probably for a re-org. The
final block hash provided should be the highest, so send a getheaders
and then fetch the blocks we need to catch up.
Github-Pull: #18962
Rebased-From: 746736639e6d05acdb85c866d4c605c947d4c500
Fix the following error in travis:
test/validationinterface_tests.cpp:26:36: error: default initialization of an object of const type 'const BlockValidationState' without a user-provided default constructor
const BlockValidationState state_dummy;
Github-Pull: #18975
Rebased-From: 050e2ee6f28e7b31c167013be7313726e34084e9
This is achieved by switching to a shared_ptr.
Also, switch the validationinterfaces in the tests to use shared_ptrs
for the same reason.
Github-Pull: #18742
Rebased-From: 7777f2a4bb1f9d843bc50a4e35085cfbb2808780
This commit is (intentionally) adding a broken test. The test is broken
because it registering a subscriber object that can go out of scope
while events are still being sent.
To run the broken test and reproduce the bug:
- Remove comment /** and */
- ./configure --with-sanitizers=address
- export ASAN_OPTIONS=detect_leaks=0
- make
- while ./src/test/test_bitcoin -t validationinterface_tests/unregister_validation_interface_race --catch_system_errors=no ; do true; done
Github-Pull: #18742
Rebased-From: fab6d060ce5f580db538070beec1c5518c8c777c
59d57f6c103100b3fdef59298d57ee8cf4c0b181 build: Ensure source tarball has leading directory name (Luke Dashjr)
Pull request description:
In the interest of moving 0.20.0 forward and being able to do rc2, extract and backport the non-controversial part from #18818.: ensure that the source tarball has leading directory name.
ACKs for top commit:
Sjors:
tACK 59d57f6c103100b3fdef59298d57ee8cf4c0b181
hebasto:
ACK 59d57f6c103100b3fdef59298d57ee8cf4c0b181.
Tree-SHA512: 6562f4cd631d2ca3c331a05d028a3c46289a7e146319b8718f96b766f952e3b831d05e249ebcc1b27f5b91a6f318a5fdd86d07b2a80ce792d4b1b032e982ed6a