MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / Handshake

Method Handshake

src/test/util/net.cpp:23–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21#include <vector>
22
23void ConnmanTestMsg::Handshake(CNode& node,
24 bool successfully_connected,
25 ServiceFlags remote_services,
26 ServiceFlags local_services,
27 int32_t version,
28 bool relay_txs)
29{
30 auto& peerman{static_cast<PeerManager&>(*m_msgproc)};
31 auto& connman{*this};
32
33 peerman.InitializeNode(node, local_services);
34 peerman.SendMessages(node);
35 FlushSendBuffer(node); // Drop the version message added by SendMessages.
36
37 CSerializedNetMsg msg_version{
38 NetMsg::Make(NetMsgType::VERSION,
39 version, //
40 Using<CustomUintFormatter<8>>(remote_services), //
41 int64_t{}, // dummy time
42 int64_t{}, // ignored service bits
43 CNetAddr::V1(CService{}), // dummy
44 int64_t{}, // ignored service bits
45 CNetAddr::V1(CService{}), // ignored
46 uint64_t{1}, // dummy nonce
47 std::string{}, // dummy subver
48 int32_t{}, // dummy starting_height
49 relay_txs),
50 };
51
52 (void)connman.ReceiveMsgFrom(node, std::move(msg_version));
53 node.fPauseSend = false;
54 connman.ProcessMessagesOnce(node);
55 peerman.SendMessages(node);
56 FlushSendBuffer(node); // Drop the verack message added by SendMessages.
57 if (node.fDisconnect) return;
58 assert(node.nVersion == version);
59 assert(node.GetCommonVersion() == std::min(version, node.AdvertisedVersion()));
60 CNodeStateStats statestats;
61 assert(peerman.GetNodeStateStats(node.GetId(), statestats));
62 assert(statestats.m_relay_txs == (relay_txs && !node.IsBlockOnlyConn()));
63 assert(statestats.their_services == remote_services);
64 if (successfully_connected) {
65 CSerializedNetMsg msg_verack{NetMsg::Make(NetMsgType::VERACK)};
66 (void)connman.ReceiveMsgFrom(node, std::move(msg_verack));
67 node.fPauseSend = false;
68 connman.ProcessMessagesOnce(node);
69 peerman.SendMessages(node);
70 assert(node.fSuccessfullyConnected == true);
71 }
72}
73
74void ConnmanTestMsg::ResetAddrCache() { m_addr_response_caches = {}; }
75

Callers 4

BOOST_AUTO_TEST_CASEFunction · 0.80
BOOST_AUTO_TEST_CASEFunction · 0.80
ResetAndInitializeMethod · 0.80
FillNodeFunction · 0.80

Calls 9

ReceiveMsgFromMethod · 0.80
GetCommonVersionMethod · 0.80
AdvertisedVersionMethod · 0.80
GetNodeStateStatsMethod · 0.80
GetIdMethod · 0.80
IsBlockOnlyConnMethod · 0.80
MakeFunction · 0.50
InitializeNodeMethod · 0.45
SendMessagesMethod · 0.45

Tested by

no test coverage detected