aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@protonmail.com>2021-02-05 11:15:33 +0100
committerWladimir J. van der Laan <laanwj@protonmail.com>2021-02-05 11:15:37 +0100
commit3931732191fbf21ee5a70eae73b44342bd91ab7b (patch)
treee65eadc50b38c238ead9489e400b0c9305027c9e /src
parent53730a78bc3b017a2b3c8e373b11983929ec61fe (diff)
parente1e67148321cff0de9eb5e63d2604f05c12e69d1 (diff)
Merge #20646: doc: refer to BIPs 339/155 in feature negotiation
e1e67148321cff0de9eb5e63d2604f05c12e69d1 doc: refer to BIPs 339/155 in feature negotiation (Jon Atack) Pull request description: of `wtxidrelay` and `addrv2`/`sendaddrv2`, and add `fSuccessfullyConnected` doxygen documentation to clarify that it is set to true on VERACK. ACKs for top commit: laanwj: re-ACK e1e67148321cff0de9eb5e63d2604f05c12e69d1 Tree-SHA512: 3e6af5b246e4ee1ec68ee34db525746717871bc986ad4840f5a8edce55740768389f6fd0ec69046eda2fb4c69939440a96571f79d36e6cbff4fd3b7f2ebc74c0
Diffstat (limited to 'src')
-rw-r--r--src/net.h1
-rw-r--r--src/net_processing.cpp12
2 files changed, 7 insertions, 6 deletions
diff --git a/src/net.h b/src/net.h
index 2c47d5e557..a0aa157058 100644
--- a/src/net.h
+++ b/src/net.h
@@ -445,6 +445,7 @@ public:
* messages, implying a preference to receive ADDRv2 instead of ADDR ones.
*/
std::atomic_bool m_wants_addrv2{false};
+ /** fSuccessfullyConnected is set to true on receiving VERACK from the peer. */
std::atomic_bool fSuccessfullyConnected{false};
// Setting fDisconnect to true will cause the node to be disconnected the
// next time DisconnectNodes() runs
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 2dffbd7620..a246c8fa1c 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -2745,12 +2745,11 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
return;
}
- // Feature negotiation of wtxidrelay must happen between VERSION and VERACK
- // to avoid relay problems from switching after a connection is up.
+ // BIP339 defines feature negotiation of wtxidrelay, which must happen between
+ // VERSION and VERACK to avoid relay problems from switching after a connection is up.
if (msg_type == NetMsgType::WTXIDRELAY) {
if (pfrom.fSuccessfullyConnected) {
- // Disconnect peers that send wtxidrelay message after VERACK; this
- // must be negotiated between VERSION and VERACK.
+ // Disconnect peers that send a wtxidrelay message after VERACK.
LogPrint(BCLog::NET, "wtxidrelay received after verack from peer=%d; disconnecting\n", pfrom.GetId());
pfrom.fDisconnect = true;
return;
@@ -2769,10 +2768,11 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
return;
}
+ // BIP155 defines feature negotiation of addrv2 and sendaddrv2, which must happen
+ // between VERSION and VERACK.
if (msg_type == NetMsgType::SENDADDRV2) {
if (pfrom.fSuccessfullyConnected) {
- // Disconnect peers that send SENDADDRV2 message after VERACK; this
- // must be negotiated between VERSION and VERACK.
+ // Disconnect peers that send a SENDADDRV2 message after VERACK.
LogPrint(BCLog::NET, "sendaddrv2 received after verack from peer=%d; disconnecting\n", pfrom.GetId());
pfrom.fDisconnect = true;
return;