mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-24 12:41:41 -05:00
![]() Initiating an outbound network connection currently involves the following steps after the socket connection is established (see `CConnman::OpenNetworkConnection` method): 1. set up node state 2. queue VERSION message 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`. Thanks go to vasild, mzumsande, dergoegge and sipa for suggestions on how to fix this. |
||
---|---|---|
.. | ||
blockfilter.cpp | ||
blockfilter.h | ||
chainstate.h | ||
coins.cpp | ||
coins.h | ||
index.cpp | ||
index.h | ||
json.cpp | ||
json.h | ||
logging.cpp | ||
logging.h | ||
mining.cpp | ||
mining.h | ||
net.cpp | ||
net.h | ||
poolresourcetester.h | ||
random.cpp | ||
random.h | ||
README.md | ||
script.cpp | ||
script.h | ||
setup_common.cpp | ||
setup_common.h | ||
str.cpp | ||
str.h | ||
transaction_utils.cpp | ||
transaction_utils.h | ||
txmempool.cpp | ||
txmempool.h | ||
validation.cpp | ||
validation.h |
Test library
This contains files for the test library, which is used by the test binaries (unit tests, benchmarks, fuzzers, gui tests).
Generally, the files in this folder should be well-separated modules. New code should be added to existing modules or (when in doubt) a new module should be created.
The utilities in here are compiled into a library, which does not hold any state. However, the main file setup_common
defines the common test setup for all test binaries. The test binaries will handle the global state when they
instantiate the BasicTestingSetup
(or one of its derived classes).