Byron Hambly
236ccf7924
Merge 8e0d9796da into merged_master (Bitcoin PR bitcoin/bitcoin#25284 )
2025-07-18 15:00:47 +02:00
glozow
c577f5afb4
Merge bitcoin/bitcoin#30394 : net: fix race condition in self-connect detection
...
ELEMENTS: cherry-picked before ElementsProject/elements#1472 for ease of
merge
16bd283b3a Reapply "test: p2p: check that connecting to ourself leads to disconnect" (Sebastian Falbesoner)
0dbcd4c148 net: prevent sending messages in `NetEventsInterface::InitializeNode` (Sebastian Falbesoner)
66673f1c13 net: fix race condition in self-connect detection (Sebastian Falbesoner)
Pull request description:
This PR fixes a recently discovered race condition in the self-connect detection (see #30362 and #30368 ).
Initiating an outbound network connection currently involves the following steps after the socket connection is established (see [`CConnman::OpenNetworkConnection`](bd5d1688b4/src/net.cpp (L2923-L2930) ) method):
1. set up node state
2. queue VERSION message (both steps 1 and 2 happen in [`InitializeNode`](bd5d1688b4/src/net_processing.cpp (L1662-L1683) ))
3. add new node to vector `m_nodes`
If we connect to ourself, it can happen that the sent VERSION message (step 2) is received and processed locally *before* the node object is added to the connection manager's `m_nodes` vector (step 3). In this case, the self-connect remains undiscovered, as the detection doesn't find the outbound peer in `m_nodes` yet (see `CConnman::CheckIncomingNonce`).
Fix this by swapping the order of 2. and 3., by taking the `PushNodeVersion` call out of `InitializeNode` and doing that in the `SendMessages` method instead, which is only called for `CNode` instances in `m_nodes`.
The temporarily reverted test introduced in #30362 is readded. Fixes #30368 .
Thanks go to vasild, mzumsande and dergoegge for suggestions on how to fix this (see https://github.com/bitcoin/bitcoin/issues/30368#issuecomment-2200625017 ff. and https://github.com/bitcoin/bitcoin/pull/30394#discussion_r1668290789 ).
ACKs for top commit:
naiyoma:
tested ACK [https://github.com/bitcoin/bitcoin/pull/30394/commits/16bd283b3ad05daa41259a062aee0fc05b463fa6 ](https://github.com/bitcoin/bitcoin/pull/30394/commits/16bd283b3ad05daa41259a062aee0fc05b463fa6 ), built and tested locally, test passes successfully.
mzumsande:
ACK 16bd283b3a
tdb3:
ACK 16bd283b3a
glozow:
ACK 16bd283b3a
dergoegge:
ACK 16bd283b3a
Tree-SHA512: 5b8aced6cda8deb38d4cd3fe4980b8af505d37ffa0925afaa734c5d81efe9d490dc48a42e1d0d45dd2961c0e1172a3d5b6582ae9a2d642f2592a17fbdc184445
(cherry picked from commit 35dddbccf1 )
2025-07-18 11:20:21 +02:00
Byron Hambly
2376883a9e
Merge 5666966dff into merged_master (Bitcoin PR bitcoin/bitcoin#28364 )
2025-07-05 18:25:36 +02:00
Byron Hambly
f95cdcb6d6
Merge 723f1c669f into merged_master (Bitcoin PR bitcoin/bitcoin#28218 )
2025-07-04 21:40:54 +02:00
Byron Hambly
27a302a296
Merge a62f5ee86c into merged_master (Bitcoin PR bitcoin/bitcoin#27675 )
2025-07-04 09:56:00 +02:00
Byron Hambly
5ee80641fe
Merge b565485c24 into merged_master (Bitcoin PR bitcoin/bitcoin#28186 )
2025-07-03 20:58:01 +02:00
Byron Hambly
81083d47bf
Merge 624333455a into merged_master (Bitcoin PR bitcoin/bitcoin#26296 )
2025-07-03 20:38:42 +02:00
Byron Hambly
8bc9cd62fb
Merge be44332803 into merged_master (Bitcoin PR bitcoin/bitcoin#28191 )
2025-07-03 15:53:03 +02:00
Byron Hambly
39e785144d
Merge b7138252ac into merged_master (Bitcoin PR bitcoin/bitcoin#27213 )
2025-07-03 15:36:25 +02:00
Byron Hambly
aacc36f977
Merge c97270d722 into merged_master (Bitcoin PR bitcoin/bitcoin#27499 )
2025-07-03 09:45:27 +02:00
Byron Hambly
28b1c140f1
Merge 296735f763 into merged_master (Bitcoin PR bitcoin/bitcoin#27947 )
2025-06-28 09:21:06 +02:00
Byron Hambly
55dfcae0bb
Merge 50a664aceb into merged_master (Bitcoin PR bitcoin/bitcoin#26969 )
2025-06-28 09:20:55 +02:00
Byron Hambly
6e867b1804
Merge fbe48f97df into merged_master (Bitcoin PR bitcoin/bitcoin#27625 )
2025-06-27 13:36:08 +02:00
Byron Hambly
625c697a2e
Merge 83c7269965 into merged_master (Bitcoin PR bitcoin/bitcoin#27800 )
2025-06-27 11:25:20 +02:00
Byron Hambly
af19ee63d4
Merge 8b59231641 into merged_master (Bitcoin PR bitcoin/bitcoin#27761 )
2025-06-24 14:49:10 +02:00
Byron Hambly
07576cee5b
Merge e43432086a into merged_master (Bitcoin PR bitcoin/bitcoin#27743 )
2025-06-23 14:45:12 +02:00
Byron Hambly
d064ad5cf3
Merge 51c050787f into merged_master (Bitcoin PR bitcoin/bitcoin#27626 )
2025-06-23 11:56:40 +02:00
Byron Hambly
974c4bd0b9
Merge 137a98c5a2 into merged_master (Bitcoin PR bitcoin/bitcoin#27610 )
2025-06-20 10:57:34 +02:00
Byron Hambly
b1d470027d
Merge c2f2abd0a4 into merged_master (Bitcoin PR bitcoin/bitcoin#27125 )
2025-06-20 10:46:05 +02:00
Byron Hambly
824dd11fb9
Merge dbfc748d3d into merged_master (Bitcoin PR bitcoin/bitcoin#27608 )
2025-06-20 08:57:14 +02:00
Byron Hambly
5a1eabf055
Merge 8f5da89625 into merged_master (Bitcoin PR bitcoin/bitcoin#27559 )
2025-05-15 13:12:53 +02:00
Byron Hambly
5ac82e15a9
Merge 669af32632 into merged_master (Bitcoin PR bitcoin/bitcoin#27419 )
2025-05-09 11:47:45 +02:00
Byron Hambly
60599d974e
Merge 4c40837a45 into merged_master (Bitcoin PR bitcoin/bitcoin#27412 )
2025-05-08 16:45:53 +02:00
Byron Hambly
979170fd2c
ci: asan fixes
2025-04-29 13:49:44 +02:00
Byron Hambly
1a682aba9e
Merge 53eb4b7a21 into merged_master (Bitcoin PR bitcoin/bitcoin#27270 )
2025-04-12 13:31:16 +02:00
Byron Hambly
62e97f1051
Merge 8e9e2b4cb3 into merged_master (Bitcoin PR bitcoin/bitcoin#27379 )
2025-04-12 11:57:04 +02:00
Byron Hambly
3c2668404a
Merge d4833e9c49 into merged_master (Bitcoin PR bitcoin/bitcoin#26140 )
2025-04-12 11:06:18 +02:00
Byron Hambly
d45c7cba9b
Merge 5241b8bdff into merged_master (Bitcoin PR bitcoin/bitcoin#27368 )
2025-04-12 10:25:04 +02:00
Byron Hambly
32f56a1e5b
Merge d254f942a5 into merged_master (Bitcoin PR bitcoin/bitcoin#27324 )
2025-04-11 23:01:24 +02:00
Byron Hambly
230bfb058b
Merge 2305643646 into merged_master (Bitcoin PR bitcoin/bitcoin#27257 )
2025-04-11 22:04:13 +02:00
Thomas Trevethan
860731d44d
Merge 664500fc71 into merged_master (Bitcoin PR bitcoin/bitcoin#27278 )
2025-04-11 14:58:52 +01:00
Byron Hambly
c312a23624
Merge 35fbc97208 into merged_master (Bitcoin PR bitcoin/bitcoin#25619 )
2025-04-07 08:19:49 +02:00
Tom Trevethan
e8e7aea876
Merge 37fea41bbf into merged_master (Bitcoin PR bitcoin/bitcoin#26982 )
2025-04-04 14:42:54 +00:00
Tom Trevethan
5b2b315520
Merge 9a288430df into merged_master (Bitcoin PR bitcoin/bitcoin#26900 )
2025-04-04 14:21:48 +00:00
Tom Trevethan
1200d73ab4
Merge 835212cd1d into merged_master (Bitcoin PR bitcoin/bitcoin#25880 )
2025-04-04 14:12:28 +00:00
Tom Trevethan
1435fb334b
Merge 79e007d1d6 into merged_master (Bitcoin PR bitcoin/bitcoin#25296 )
2025-04-04 13:36:08 +00:00
Byron Hambly
0534256d39
Merge 77a36033b5 into merged_master (Bitcoin PR bitcoin/bitcoin#26551 )
2025-04-04 11:47:53 +02:00
Byron Hambly
b4405ba453
Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750 )
2025-03-31 16:37:52 +02:00
Tom Trevethan
98fc0af965
Merge 6061eb6564 into merged_master (Bitcoin PR bitcoin/bitcoin#26199 )
2025-03-26 15:42:23 +00:00
Tom Trevethan
1b33a06134
Merge 5126e625cb into merged_master (Bitcoin PR bitcoin/bitcoin#26378 )
2025-03-25 19:43:38 +00:00
Tom Trevethan
387af571cd
Merge 1ff79292e3 into merged_master (Bitcoin PR bitcoin/bitcoin#26609 )
2025-03-24 23:33:59 +00:00
Byron Hambly
028fd5fcbb
Merge 5b3f05b7eb into merged_master (Bitcoin PR bitcoin/bitcoin#24226 )
2025-03-04 13:22:16 +02:00
Byron Hambly
1c748cbfe2
Merge 8b796866b4 into merged_master (Bitcoin PR bitcoin/bitcoin#26624 )
2025-03-04 13:22:12 +02:00
Byron Hambly
da0e8310ca
Merge 78aee0fe2c into merged_master (Bitcoin PR bitcoin/bitcoin#26569 )
2025-03-04 12:20:20 +02:00
Byron Hambly
6274a3e6a7
Merge bcee94d107 into merged_master (Bitcoin PR bitcoin/bitcoin#26359 )
2025-03-04 11:18:33 +02:00
Byron Hambly
b929f50852
Merge a79b720092 into merged_master (Bitcoin PR bitcoin/bitcoin#26295 )
2025-03-03 15:12:13 +02:00
Byron Hambly
da8b6f2f7f
Merge d0b1f613c2 into merged_master (Bitcoin PR bitcoin/bitcoin#17786 )
2025-03-03 11:12:31 +02:00
Byron Hambly
5c10c048e6
Merge 7ed2768dca into merged_master (Elements PR #1421 )
2025-02-28 15:02:20 +02:00
Byron Hambly
b83abdf89a
Merge UP TO e42ba134f4 into merged_master (UP TO Bitcoin PR bitcoin/bitcoin#26448 )
...
1667577042 2022-11-04T16:50:42+01:00 e42ba134f4 Bitcoin Merge bitcoin/bitcoin#26448 : test: fix intermittent failure in p2p_sendtxrcncl.py
1667576919 2022-11-04T15:48:39+00:00 83cf055bef Bitcoin Merge bitcoin/bitcoin#26443 : doc: mention BIP86 in doc/bips.md
1667478613 2022-11-03T13:30:13+01:00 28653a596a Bitcoin Merge bitcoin/bitcoin#26445 : .python-version: bump patch version to 3.6.15
1667471345 2022-11-03T10:29:05+00:00 2a7c9984db Bitcoin Merge bitcoin/bitcoin#25248 : refactor: Add LIFETIMEBOUND / -Wdangling-gsl to Assert()
1667397640 2022-11-02T15:00:40+01:00 5274f32437 Bitcoin Merge bitcoin/bitcoin#26417 : test: fix intermittent failure in feature_index_prune.py
1667372848 2022-11-02T08:07:28+01:00 39f026b1ec Bitcoin Merge bitcoin/bitcoin#26396 : net: Avoid SetTxRelay for feeler connections
1667316369 2022-11-01T16:26:09+01:00 bf0cb43990 Bitcoin Merge bitcoin/bitcoin#26437 : test: remove unused `CHANGE_{XPRV,XPUB}` constants
1667300957 2022-11-01T11:09:17+00:00 5668ccec1d Bitcoin Merge bitcoin/bitcoin#25548 : gui: Check for readlink buffer overflow and handle gracefully
1667297563 2022-11-01T10:12:43+00:00 c041d8f2c9 Bitcoin Merge bitcoin/bitcoin#26360 : build: remove threadinterrupt from libbitcoinkernel
1667297149 2022-11-01T10:05:49+00:00 27e76afe24 Bitcoin Merge bitcoin/bitcoin#26294 : build: move util/url to common/url
1667291397 2022-11-01T08:29:57+00:00 d08b63baa0 Bitcoin Merge bitcoin/bitcoin#26373 : Update minisketch subtree to latest upstream
1667230521 2022-10-31T15:35:21+00:00 43e813cab2 Bitcoin Merge bitcoin/bitcoin#26387 : p2p: TryLowWorkHeadersSync follow-ups
1667217075 2022-10-31T11:51:15+00:00 4766cd1981 Bitcoin Merge bitcoin/bitcoin#24051 : Bugfix: configure: bitcoin-{cli,tx,util} don't need UPnP, NAT-PMP, or ZMQ
1667213203 2022-10-31T11:46:43+01:00 2856dee808 Bitcoin Merge bitcoin/bitcoin#26402 : doc: Fix typos
1667202170 2022-10-31T08:42:50+01:00 c75c0d8e11 Bitcoin Merge bitcoin/bitcoin#26424 : doc: correct deriveaddresses RPC name
1667034850 2022-10-29T11:14:10+02:00 4f270d2b63 Bitcoin Merge bitcoin/bitcoin#26404 : test: fix intermittent failure in rpc_getblockfrompeer.py
1667030363 2022-10-29T09:59:23+02:00 984a01589b Bitcoin Merge bitcoin/bitcoin#26408 : test: Remove spam from debug log
1666985837 2022-10-28T15:37:17-04:00 8b050762b1 Bitcoin Merge bitcoin/bitcoin#26409 : refactor: Silence GCC Wmissing-field-initializers in ChainstateManagerOpts
1666949533 2022-10-28T11:32:13+02:00 1bad29fe02 Bitcoin Merge bitcoin/bitcoin#26377 : test: Make `system_tests/run_command` test locale and platform agnostic
2025-02-27 13:40:17 +02:00
Pablo Greco
b92a3ceda2
TSAN: Avoid unlocked access to pindexBestHeader
2025-02-23 14:34:19 -08:00