Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13115369
D17131.id50856.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
26 KB
Subscribers
None
D17131.id50856.diff
View Options
diff --git a/src/avalanche/test/processor_tests.cpp b/src/avalanche/test/processor_tests.cpp
--- a/src/avalanche/test/processor_tests.cpp
+++ b/src/avalanche/test/processor_tests.cpp
@@ -170,7 +170,7 @@
CAddress addr(ip(GetRand<uint32_t>()), NODE_NONE);
auto node =
- new CNode(id++, INVALID_SOCKET, addr,
+ new CNode(id++, /*sock=*/nullptr, addr,
/* nKeyedNetGroupIn */ 0,
/* nLocalHostNonceIn */ 0,
/* nLocalExtraEntropyIn */ 0, CAddress(),
diff --git a/src/net.h b/src/net.h
--- a/src/net.h
+++ b/src/net.h
@@ -466,8 +466,18 @@
std::unique_ptr<TransportSerializer> m_serializer;
const NetPermissionFlags m_permission_flags{NetPermissionFlags::None};
- // socket
- SOCKET hSocket GUARDED_BY(cs_hSocket);
+
+ /**
+ * Socket used for communication with the node.
+ * May not own a Sock object (after `CloseSocketDisconnect()` or during
+ * tests).
+ * `shared_ptr` (instead of `unique_ptr`) is used to avoid premature close
+ * of the underlying file descriptor by one thread while another thread is
+ * poll(2)-ing it for activity.
+ * @see https://github.com/bitcoin/bitcoin/issues/21744 for details.
+ */
+ std::shared_ptr<Sock> m_sock GUARDED_BY(m_sock_mutex);
+
/** Total size of all vSendMsg entries. */
size_t nSendSize GUARDED_BY(cs_vSend){0};
/** Offset inside the first vSendMsg already sent */
@@ -475,7 +485,7 @@
uint64_t nSendBytes GUARDED_BY(cs_vSend){0};
std::deque<std::vector<uint8_t>> vSendMsg GUARDED_BY(cs_vSend);
Mutex cs_vSend;
- Mutex cs_hSocket;
+ Mutex m_sock_mutex;
Mutex cs_vRecv;
RecursiveMutex cs_vProcessMsg;
@@ -694,12 +704,11 @@
std::atomic<std::chrono::microseconds> m_min_ping_time{
std::chrono::microseconds::max()};
- CNode(NodeId id, SOCKET hSocketIn, const CAddress &addrIn,
+ CNode(NodeId id, std::shared_ptr<Sock> sock, const CAddress &addrIn,
uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn,
uint64_t nLocalExtraEntropyIn, const CAddress &addrBindIn,
const std::string &addrNameIn, ConnectionType conn_type_in,
bool inbound_onion, CNodeOptions &&node_opts = {});
- ~CNode();
CNode(const CNode &) = delete;
CNode &operator=(const CNode &) = delete;
@@ -752,7 +761,7 @@
void Release() { nRefCount--; }
- void CloseSocketDisconnect() EXCLUSIVE_LOCKS_REQUIRED(!cs_hSocket);
+ void CloseSocketDisconnect() EXCLUSIVE_LOCKS_REQUIRED(!m_sock_mutex);
void copyStats(CNodeStats &stats)
EXCLUSIVE_LOCKS_REQUIRED(!m_subver_mutex, !m_addr_local_mutex,
diff --git a/src/net.cpp b/src/net.cpp
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -551,7 +551,7 @@
addr_bind = GetBindAddress(sock->Get());
}
CNode *pnode = new CNode(
- id, sock->Release(), addrConnect, CalculateKeyedNetGroup(addrConnect),
+ id, std::move(sock), addrConnect, CalculateKeyedNetGroup(addrConnect),
nonce, extra_entropy, addr_bind, pszDest ? pszDest : "", conn_type,
/* inbound_onion */ false,
CNodeOptions{.permission_flags = permission_flags});
@@ -566,10 +566,10 @@
void CNode::CloseSocketDisconnect() {
fDisconnect = true;
- LOCK(cs_hSocket);
- if (hSocket != INVALID_SOCKET) {
+ LOCK(m_sock_mutex);
+ if (m_sock) {
LogPrint(BCLog::NET, "disconnecting peer=%d\n", id);
- CloseSocket(hSocket);
+ m_sock.reset();
}
}
@@ -850,13 +850,12 @@
int nBytes = 0;
{
- LOCK(node.cs_hSocket);
- if (node.hSocket == INVALID_SOCKET) {
+ LOCK(node.m_sock_mutex);
+ if (!node.m_sock) {
break;
}
- nBytes = send(
- node.hSocket,
+ nBytes = node.m_sock->Send(
reinterpret_cast<const char *>(data.data()) + node.nSendOffset,
data.size() - node.nSendOffset, MSG_NOSIGNAL | MSG_DONTWAIT);
}
@@ -1387,7 +1386,7 @@
std::find(m_onion_binds.begin(), m_onion_binds.end(), addr_bind) !=
m_onion_binds.end();
CNode *pnode = new CNode(
- id, sock->Release(), addr, CalculateKeyedNetGroup(addr), nonce,
+ id, std::move(sock), addr, CalculateKeyedNetGroup(addr), nonce,
extra_entropy, addr_bind, "", ConnectionType::INBOUND, inbound_onion,
CNodeOptions{
.permission_flags = permission_flags,
@@ -1596,18 +1595,18 @@
select_send = !pnode->vSendMsg.empty();
}
- LOCK(pnode->cs_hSocket);
- if (pnode->hSocket == INVALID_SOCKET) {
+ LOCK(pnode->m_sock_mutex);
+ if (!pnode->m_sock) {
continue;
}
- error_set.insert(pnode->hSocket);
+ error_set.insert(pnode->m_sock->Get());
if (select_send) {
- send_set.insert(pnode->hSocket);
+ send_set.insert(pnode->m_sock->Get());
continue;
}
if (select_recv) {
- recv_set.insert(pnode->hSocket);
+ recv_set.insert(pnode->m_sock->Get());
}
}
@@ -1794,25 +1793,25 @@
bool sendSet = false;
bool errorSet = false;
{
- LOCK(pnode->cs_hSocket);
- if (pnode->hSocket == INVALID_SOCKET) {
+ LOCK(pnode->m_sock_mutex);
+ if (!pnode->m_sock) {
continue;
}
- recvSet = recv_set.count(pnode->hSocket) > 0;
- sendSet = send_set.count(pnode->hSocket) > 0;
- errorSet = error_set.count(pnode->hSocket) > 0;
+ recvSet = recv_set.count(pnode->m_sock->Get()) > 0;
+ sendSet = send_set.count(pnode->m_sock->Get()) > 0;
+ errorSet = error_set.count(pnode->m_sock->Get()) > 0;
}
if (recvSet || errorSet) {
// typical socket buffer is 8K-64K
uint8_t pchBuf[0x10000];
int32_t nBytes = 0;
{
- LOCK(pnode->cs_hSocket);
- if (pnode->hSocket == INVALID_SOCKET) {
+ LOCK(pnode->m_sock_mutex);
+ if (!pnode->m_sock) {
continue;
}
- nBytes = recv(pnode->hSocket, (char *)pchBuf, sizeof(pchBuf),
- MSG_DONTWAIT);
+ nBytes =
+ pnode->m_sock->Recv(pchBuf, sizeof(pchBuf), MSG_DONTWAIT);
}
if (nBytes > 0) {
bool notify = false;
@@ -3419,12 +3418,12 @@
return availabilityScore;
}
-CNode::CNode(NodeId idIn, SOCKET hSocketIn, const CAddress &addrIn,
+CNode::CNode(NodeId idIn, std::shared_ptr<Sock> sock, const CAddress &addrIn,
uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn,
uint64_t nLocalExtraEntropyIn, const CAddress &addrBindIn,
const std::string &addrNameIn, ConnectionType conn_type_in,
bool inbound_onion, CNodeOptions &&node_opts)
- : m_permission_flags{node_opts.permission_flags},
+ : m_permission_flags{node_opts.permission_flags}, m_sock{sock},
m_connected(GetTime<std::chrono::seconds>()), addr(addrIn),
addrBind(addrBindIn),
m_addr_name{addrNameIn.empty() ? addr.ToStringIPPort() : addrNameIn},
@@ -3438,7 +3437,6 @@
if (inbound_onion) {
assert(conn_type_in == ConnectionType::INBOUND);
}
- hSocket = hSocketIn;
for (const std::string &msg : getAllNetMessageTypes()) {
mapRecvBytesPerMsgCmd[msg] = 0;
@@ -3459,10 +3457,6 @@
std::make_unique<V1TransportSerializer>(V1TransportSerializer());
}
-CNode::~CNode() {
- CloseSocket(hSocket);
-}
-
bool CConnman::NodeFullyConnected(const CNode *pnode) {
return pnode && pnode->fSuccessfullyConnected && !pnode->fDisconnect;
}
diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp
--- a/src/test/denialofservice_tests.cpp
+++ b/src/test/denialofservice_tests.cpp
@@ -73,7 +73,7 @@
// Mock an outbound peer
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
- CNode dummyNode1(id++, INVALID_SOCKET, addr1,
+ CNode dummyNode1(id++, /*sock=*/nullptr, addr1,
/* nKeyedNetGroupIn */ 0, /* nLocalHostNonceIn */ 0,
/* nLocalExtraEntropyIn */ 0, CAddress(), /* pszDest */ "",
ConnectionType::OUTBOUND_FULL_RELAY,
@@ -129,7 +129,7 @@
PeerManager &peerLogic,
CConnmanTest *connman) {
CAddress addr(ip(g_insecure_rand_ctx.randbits(32)), NODE_NONE);
- vNodes.emplace_back(new CNode(id++, INVALID_SOCKET, addr,
+ vNodes.emplace_back(new CNode(id++, /*sock=*/nullptr, addr,
/* nKeyedNetGroupIn */ 0,
/* nLocalHostNonceIn */ 0,
/* nLocalExtraEntropyIn */ 0, CAddress(),
@@ -244,7 +244,7 @@
banman->ClearBanned();
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
- CNode dummyNode1(id++, INVALID_SOCKET, addr1,
+ CNode dummyNode1(id++, /*sock=*/nullptr, addr1,
/* nKeyedNetGroupIn */ 0, /* nLocalHostNonceIn */ 0,
/* nLocalExtraEntropyIn */ 0, CAddress(), /* pszDest */ "",
ConnectionType::INBOUND, /* inbound_onion */ false);
@@ -260,7 +260,7 @@
BOOST_CHECK(!banman->IsDiscouraged(ip(0xa0b0c001 | 0x0000ff00)));
CAddress addr2(ip(0xa0b0c002), NODE_NONE);
- CNode dummyNode2(id++, INVALID_SOCKET, addr2,
+ CNode dummyNode2(id++, /*sock=*/nullptr, addr2,
/* nKeyedNetGroupIn */ 1, /* nLocalHostNonceIn */ 1,
/* nLocalExtraEntropyIn */ 1, CAddress(),
/* pszDest */ "", ConnectionType::INBOUND,
@@ -305,7 +305,7 @@
SetMockTime(nStartTime);
CAddress addr(ip(0xa0b0c001), NODE_NONE);
- CNode dummyNode(id++, INVALID_SOCKET, addr,
+ CNode dummyNode(id++, /*sock=*/nullptr, addr,
/* nKeyedNetGroupIn */ 4, /* nLocalHostNonceIn */ 4,
/* nLocalExtraEntropyIn */ 4, CAddress(), /* pszDest */ "",
ConnectionType::INBOUND, /* inbound_onion */ false);
diff --git a/src/test/fuzz/CMakeLists.txt b/src/test/fuzz/CMakeLists.txt
--- a/src/test/fuzz/CMakeLists.txt
+++ b/src/test/fuzz/CMakeLists.txt
@@ -98,6 +98,7 @@
tx_in.cpp
tx_out.cpp
txrequest.cpp
+ util.cpp
validation_load_mempool.cpp
)
diff --git a/src/test/fuzz/net.cpp b/src/test/fuzz/net.cpp
--- a/src/test/fuzz/net.cpp
+++ b/src/test/fuzz/net.cpp
@@ -43,9 +43,10 @@
return;
}
+ const auto sock = std::make_shared<FuzzedSock>(fuzzed_data_provider);
CNode node{
fuzzed_data_provider.ConsumeIntegral<NodeId>(),
- INVALID_SOCKET,
+ sock,
*address,
fuzzed_data_provider.ConsumeIntegral<uint64_t>(),
fuzzed_data_provider.ConsumeIntegral<uint64_t>(),
diff --git a/src/test/fuzz/util.h b/src/test/fuzz/util.h
--- a/src/test/fuzz/util.h
+++ b/src/test/fuzz/util.h
@@ -38,6 +38,33 @@
using namespace fuzzer;
+class FuzzedSock : public Sock {
+ FuzzedDataProvider &m_fuzzed_data_provider;
+
+public:
+ explicit FuzzedSock(FuzzedDataProvider &fuzzed_data_provider);
+
+ ~FuzzedSock() override {}
+
+ FuzzedSock &operator=(Sock &&other) override;
+
+ SOCKET Get() const override;
+
+ SOCKET Release() override;
+
+ void Reset() override;
+
+ ssize_t Send(const void *data, size_t len, int flags) const override;
+
+ ssize_t Recv(void *buf, size_t len, int flags) const override;
+
+ std::unique_ptr<Sock> Accept(sockaddr *addr,
+ socklen_t *addr_len) const override;
+
+ bool Wait(std::chrono::milliseconds timeout, Event requested,
+ Event *occurred = nullptr) const override;
+};
+
template <typename... Callables>
void CallOneOf(FuzzedDataProvider &fuzzed_data_provider,
Callables... callables) {
@@ -324,7 +351,7 @@
const std::optional<NodeId> &node_id_in = std::nullopt) noexcept {
const NodeId node_id =
node_id_in.value_or(fuzzed_data_provider.ConsumeIntegral<NodeId>());
- const SOCKET socket = INVALID_SOCKET;
+ const auto sock = std::make_shared<FuzzedSock>(fuzzed_data_provider);
const CAddress address = ConsumeAddress(fuzzed_data_provider);
const uint64_t keyed_net_group =
fuzzed_data_provider.ConsumeIntegral<uint64_t>();
@@ -339,15 +366,16 @@
fuzzed_data_provider.PickValueInArray(ALL_CONNECTION_TYPES);
const bool inbound_onion = fuzzed_data_provider.ConsumeBool();
if constexpr (ReturnUniquePtr) {
- return std::make_unique<CNode>(node_id, socket, address,
- keyed_net_group, local_host_nonce,
- local_extra_entropy, addr_bind,
- addr_name, conn_type, inbound_onion);
+ return std::make_unique<CNode>(node_id, sock, address, keyed_net_group,
+ local_host_nonce, local_extra_entropy,
+ addr_bind, addr_name, conn_type,
+ inbound_onion);
} else {
- return CNode{node_id, socket, address,
- keyed_net_group, local_host_nonce, local_extra_entropy,
- addr_bind, addr_name, conn_type,
- inbound_onion};
+ return CNode{node_id, sock,
+ address, keyed_net_group,
+ local_host_nonce, local_extra_entropy,
+ addr_bind, addr_name,
+ conn_type, inbound_onion};
}
}
inline std::unique_ptr<CNode>
@@ -566,124 +594,6 @@
}
}
-class FuzzedSock : public Sock {
- FuzzedDataProvider &m_fuzzed_data_provider;
-
-public:
- explicit FuzzedSock(FuzzedDataProvider &fuzzed_data_provider)
- : m_fuzzed_data_provider{fuzzed_data_provider} {}
-
- ~FuzzedSock() override {}
-
- FuzzedSock &operator=(Sock &&other) override {
- assert(false && "Not implemented yet.");
- return *this;
- }
-
- SOCKET Get() const override { assert(false && "Not implemented yet."); }
-
- SOCKET Release() override { assert(false && "Not implemented yet."); }
-
- void Reset() override { assert(false && "Not implemented yet."); }
-
- ssize_t Send(const void *data, size_t len, int flags) const override {
- constexpr std::array<int, 18> send_errnos{{
- EACCES,
- EAGAIN,
- EALREADY,
- EBADF,
- ECONNRESET,
- EDESTADDRREQ,
- EFAULT,
- EINTR,
- EINVAL,
- EISCONN,
- EMSGSIZE,
- ENOBUFS,
- ENOMEM,
- ENOTCONN,
- ENOTSOCK,
- EOPNOTSUPP,
- EPIPE,
- EWOULDBLOCK,
- }};
- if (m_fuzzed_data_provider.ConsumeBool()) {
- return len;
- }
- const ssize_t r =
- m_fuzzed_data_provider.ConsumeIntegralInRange<ssize_t>(-1, len);
- if (r == -1) {
- SetFuzzedErrNo(m_fuzzed_data_provider, send_errnos);
- }
- return r;
- }
-
- ssize_t Recv(void *buf, size_t len, int flags) const override {
- constexpr std::array<int, 10> recv_errnos{{
- EAGAIN,
- EBADF,
- ECONNREFUSED,
- EFAULT,
- EINTR,
- EINVAL,
- ENOMEM,
- ENOTCONN,
- ENOTSOCK,
- EWOULDBLOCK,
- }};
- assert(buf != nullptr || len == 0);
- if (len == 0 || m_fuzzed_data_provider.ConsumeBool()) {
- const ssize_t r = m_fuzzed_data_provider.ConsumeBool() ? 0 : -1;
- if (r == -1) {
- SetFuzzedErrNo(m_fuzzed_data_provider, recv_errnos);
- }
- return r;
- }
- const std::vector<uint8_t> random_bytes =
- m_fuzzed_data_provider.ConsumeBytes<uint8_t>(
- m_fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, len));
- if (random_bytes.empty()) {
- const ssize_t r = m_fuzzed_data_provider.ConsumeBool() ? 0 : -1;
- if (r == -1) {
- SetFuzzedErrNo(m_fuzzed_data_provider, recv_errnos);
- }
- return r;
- }
- std::memcpy(buf, random_bytes.data(), random_bytes.size());
- if (m_fuzzed_data_provider.ConsumeBool()) {
- if (len > random_bytes.size()) {
- std::memset((char *)buf + random_bytes.size(), 0,
- len - random_bytes.size());
- }
- return len;
- }
- if (m_fuzzed_data_provider.ConsumeBool() &&
- std::getenv("FUZZED_SOCKET_FAKE_LATENCY") != nullptr) {
- std::this_thread::sleep_for(std::chrono::milliseconds{2});
- }
- return random_bytes.size();
- }
-
- std::unique_ptr<Sock> Accept(sockaddr *addr,
- socklen_t *addr_len) const override {
- constexpr std::array<int, 3> accept_errnos{{
- ECONNABORTED,
- EINTR,
- ENOMEM,
- }};
- if (m_fuzzed_data_provider.ConsumeBool()) {
- SetFuzzedErrNo(m_fuzzed_data_provider, accept_errnos);
- return std::unique_ptr<FuzzedSock>();
- }
- return std::make_unique<FuzzedSock>(m_fuzzed_data_provider);
- }
-
- bool Wait(std::chrono::milliseconds timeout, Event requested,
- Event *occurred = nullptr) const override {
- return m_fuzzed_data_provider.ConsumeBool();
- }
-};
-
[[nodiscard]] inline FuzzedSock
ConsumeSock(FuzzedDataProvider &fuzzed_data_provider) {
return FuzzedSock{fuzzed_data_provider};
diff --git a/src/test/fuzz/util.cpp b/src/test/fuzz/util.cpp
new file mode 100644
--- /dev/null
+++ b/src/test/fuzz/util.cpp
@@ -0,0 +1,122 @@
+// Copyright (c) 2009-2019 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#include <test/fuzz/util.h>
+
+FuzzedSock::FuzzedSock(FuzzedDataProvider &fuzzed_data_provider)
+ : m_fuzzed_data_provider{fuzzed_data_provider} {}
+
+FuzzedSock &FuzzedSock::operator=(Sock &&other) {
+ assert(false && "Not implemented yet.");
+ return *this;
+}
+
+SOCKET FuzzedSock::Get() const {
+ assert(false && "Not implemented yet.");
+}
+
+SOCKET FuzzedSock::Release() {
+ assert(false && "Not implemented yet.");
+}
+
+void FuzzedSock::Reset() {
+ assert(false && "Not implemented yet.");
+}
+
+ssize_t FuzzedSock::Send(const void *data, size_t len, int flags) const {
+ constexpr std::array<int, 18> send_errnos{{
+ EACCES,
+ EAGAIN,
+ EALREADY,
+ EBADF,
+ ECONNRESET,
+ EDESTADDRREQ,
+ EFAULT,
+ EINTR,
+ EINVAL,
+ EISCONN,
+ EMSGSIZE,
+ ENOBUFS,
+ ENOMEM,
+ ENOTCONN,
+ ENOTSOCK,
+ EOPNOTSUPP,
+ EPIPE,
+ EWOULDBLOCK,
+ }};
+ if (m_fuzzed_data_provider.ConsumeBool()) {
+ return len;
+ }
+ const ssize_t r =
+ m_fuzzed_data_provider.ConsumeIntegralInRange<ssize_t>(-1, len);
+ if (r == -1) {
+ SetFuzzedErrNo(m_fuzzed_data_provider, send_errnos);
+ }
+ return r;
+}
+
+ssize_t FuzzedSock::Recv(void *buf, size_t len, int flags) const {
+ constexpr std::array<int, 10> recv_errnos{{
+ EAGAIN,
+ EBADF,
+ ECONNREFUSED,
+ EFAULT,
+ EINTR,
+ EINVAL,
+ ENOMEM,
+ ENOTCONN,
+ ENOTSOCK,
+ EWOULDBLOCK,
+ }};
+ assert(buf != nullptr || len == 0);
+ if (len == 0 || m_fuzzed_data_provider.ConsumeBool()) {
+ const ssize_t r = m_fuzzed_data_provider.ConsumeBool() ? 0 : -1;
+ if (r == -1) {
+ SetFuzzedErrNo(m_fuzzed_data_provider, recv_errnos);
+ }
+ return r;
+ }
+ const std::vector<uint8_t> random_bytes =
+ m_fuzzed_data_provider.ConsumeBytes<uint8_t>(
+ m_fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, len));
+ if (random_bytes.empty()) {
+ const ssize_t r = m_fuzzed_data_provider.ConsumeBool() ? 0 : -1;
+ if (r == -1) {
+ SetFuzzedErrNo(m_fuzzed_data_provider, recv_errnos);
+ }
+ return r;
+ }
+ std::memcpy(buf, random_bytes.data(), random_bytes.size());
+ if (m_fuzzed_data_provider.ConsumeBool()) {
+ if (len > random_bytes.size()) {
+ std::memset((char *)buf + random_bytes.size(), 0,
+ len - random_bytes.size());
+ }
+ return len;
+ }
+ if (m_fuzzed_data_provider.ConsumeBool() &&
+ std::getenv("FUZZED_SOCKET_FAKE_LATENCY") != nullptr) {
+ std::this_thread::sleep_for(std::chrono::milliseconds{2});
+ }
+ return random_bytes.size();
+}
+
+std::unique_ptr<Sock> FuzzedSock::Accept(sockaddr *addr,
+ socklen_t *addr_len) const {
+ constexpr std::array<int, 3> accept_errnos{{
+ ECONNABORTED,
+ EINTR,
+ ENOMEM,
+ }};
+ if (m_fuzzed_data_provider.ConsumeBool()) {
+ SetFuzzedErrNo(m_fuzzed_data_provider, accept_errnos);
+ return std::unique_ptr<FuzzedSock>();
+ }
+ return std::make_unique<FuzzedSock>(m_fuzzed_data_provider);
+}
+
+bool FuzzedSock::Wait(std::chrono::milliseconds timeout, Event requested,
+ Event *occurred) const {
+ return m_fuzzed_data_provider.ConsumeBool();
+}
diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp
--- a/src/test/net_tests.cpp
+++ b/src/test/net_tests.cpp
@@ -72,7 +72,7 @@
}
void AddNode(const CAddress &addr, ConnectionType type) {
- CNode *pnode = new CNode(nodeid++, INVALID_SOCKET, addr,
+ CNode *pnode = new CNode(nodeid++, /*sock=*/nullptr, addr,
CalculateKeyedNetGroup(addr),
/* nLocalHostNonceIn */ 0,
/* nLocalExtraEntropyIn */ 0, addr,
@@ -269,7 +269,6 @@
}
BOOST_AUTO_TEST_CASE(cnode_simple_test) {
- SOCKET hSocket = INVALID_SOCKET;
NodeId id = 0;
in_addr ipv4Addr;
@@ -279,7 +278,7 @@
std::string pszDest;
auto pnode1 =
- std::make_unique<CNode>(id++, hSocket, addr,
+ std::make_unique<CNode>(id++, /*sock=*/nullptr, addr,
/* nKeyedNetGroupIn = */ 0,
/* nLocalHostNonceIn = */ 0,
/* nLocalExtraEntropyIn */ 0, CAddress(),
@@ -294,9 +293,9 @@
BOOST_CHECK(pnode1->m_inbound_onion == false);
BOOST_CHECK_EQUAL(pnode1->ConnectedThroughNetwork(), Network::NET_IPV4);
- auto pnode2 =
- std::make_unique<CNode>(id++, hSocket, addr, 1, 1, 1, CAddress(),
- pszDest, ConnectionType::INBOUND, false);
+ auto pnode2 = std::make_unique<CNode>(id++, /*sock=*/nullptr, addr, 1, 1, 1,
+ CAddress(), pszDest,
+ ConnectionType::INBOUND, false);
BOOST_CHECK(pnode2->IsFullOutboundConn() == false);
BOOST_CHECK(pnode2->IsManualConn() == false);
BOOST_CHECK(pnode2->IsBlockOnlyConn() == false);
@@ -307,7 +306,7 @@
BOOST_CHECK_EQUAL(pnode2->ConnectedThroughNetwork(), Network::NET_IPV4);
auto pnode3 = std::make_unique<CNode>(
- id++, hSocket, addr, 0, 0, 0, CAddress(), pszDest,
+ id++, /*sock=*/nullptr, addr, 0, 0, 0, CAddress(), pszDest,
ConnectionType::OUTBOUND_FULL_RELAY, false);
BOOST_CHECK(pnode3->IsFullOutboundConn() == true);
BOOST_CHECK(pnode3->IsManualConn() == false);
@@ -318,9 +317,9 @@
BOOST_CHECK(pnode3->m_inbound_onion == false);
BOOST_CHECK_EQUAL(pnode3->ConnectedThroughNetwork(), Network::NET_IPV4);
- auto pnode4 =
- std::make_unique<CNode>(id++, hSocket, addr, 1, 1, 1, CAddress(),
- pszDest, ConnectionType::INBOUND, true);
+ auto pnode4 = std::make_unique<CNode>(id++, /*sock=*/nullptr, addr, 1, 1, 1,
+ CAddress(), pszDest,
+ ConnectionType::INBOUND, true);
BOOST_CHECK(pnode4->IsFullOutboundConn() == false);
BOOST_CHECK(pnode4->IsManualConn() == false);
BOOST_CHECK(pnode4->IsBlockOnlyConn() == false);
@@ -908,7 +907,7 @@
ipv4AddrPeer.s_addr = 0xa0b0c001;
CAddress addr = CAddress(CService(ipv4AddrPeer, 7777), NODE_NETWORK);
std::unique_ptr<CNode> pnode = std::make_unique<CNode>(
- 0, INVALID_SOCKET, addr, /* nKeyedNetGroupIn */ 0,
+ 0, /*sock=*/nullptr, addr, /* nKeyedNetGroupIn */ 0,
/* nLocalHostNonceIn */ 0, /* nLocalExtraEntropyIn */ 0, CAddress{},
/* pszDest */ std::string{}, ConnectionType::OUTBOUND_FULL_RELAY,
/* inbound_onion = */ false);
@@ -964,7 +963,7 @@
peer_out_in_addr.s_addr = htonl(0x01020304);
CNode peer_out{
/*id=*/0,
- /*hSocketIn=*/INVALID_SOCKET,
+ /*sock=*/nullptr,
/*addrIn=*/CAddress{CService{peer_out_in_addr, 8333}, NODE_NETWORK},
/*nKeyedNetGroupIn=*/0,
/*nLocalHostNonceIn=*/0,
@@ -988,7 +987,7 @@
peer_in_in_addr.s_addr = htonl(0x05060708);
CNode peer_in{
/*id=*/0,
- /*hSocketIn=*/INVALID_SOCKET,
+ /*sock=*/nullptr,
/*addrIn=*/CAddress{CService{peer_in_in_addr, 8333}, NODE_NETWORK},
/*nKeyedNetGroupIn=*/0,
/*nLocalHostNonceIn=*/0,
@@ -1023,7 +1022,7 @@
ipv4Addr.s_addr = 0xa0b0c001;
CAddress addr = CAddress(CService(ipv4Addr, 7777), NODE_NETWORK);
std::unique_ptr<CNode> pnode = std::make_unique<CNode>(
- 0, INVALID_SOCKET, addr, 0, 0, 0, CAddress(), std::string{},
+ 0, /*sock=*/nullptr, addr, 0, 0, 0, CAddress(), std::string{},
ConnectionType::OUTBOUND_FULL_RELAY, false);
pnode->m_avalanche_enabled = true;
@@ -1280,7 +1279,7 @@
in_addr peer_in_addr;
peer_in_addr.s_addr = htonl(0x01020304);
CNode peer{/*id=*/0,
- /*hSocketIn=*/INVALID_SOCKET,
+ /*sock=*/nullptr,
/*addrIn=*/CAddress{CService{peer_in_addr, 8333}, NODE_NETWORK},
/*nKeyedNetGroupIn=*/0,
/*nLocalHostNonceIn=*/0,
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Mar 1, 10:58 (12 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5178459
Default Alt Text
D17131.id50856.diff (26 KB)
Attached To
D17131: net: use Sock in CNode
Event Timeline
Log In to Comment