mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 15:09:59 +01:00
Merge #19998: net: Add CNode::ConnectedThroughNetwork member function
3984b78cd7test: Add tests for CNode::ConnectedThroughNetwork (Hennadii Stepanov)49fba9c1aanet: Add CNode::ConnectedThroughNetwork member function (Hennadii Stepanov)d4dde24034net: Add CNode::m_inbound_onion data member (Hennadii Stepanov) Pull request description: This PR: - adds `CNode::ConnectedThroughNetwork` member function - is based on #19991, and only last two commits belong to it - is required for https://github.com/bitcoin-core/gui/pull/86 and #20002 ACKs for top commit: jonatack: re-ACK3984b78cd7per `git diff 3989fcf 3984b78c` laanwj: Code review ACK3984b78cd7Tree-SHA512: 23a9c8bca8dca75113b5505fe443b294f2d42d03c98c7e34919da12d8396beb8d0ada3a58ae16e3da04b7044395f72cf9c216625afc078256cd6c897ac42bf3d
This commit is contained in:
25
src/net.h
25
src/net.h
@@ -253,6 +253,7 @@ public:
|
||||
LOCK(cs_vAddedNodes);
|
||||
vAddedNodes = connOptions.m_added_nodes;
|
||||
}
|
||||
m_onion_binds = connOptions.onion_binds;
|
||||
}
|
||||
|
||||
CConnman(uint64_t seed0, uint64_t seed1, bool network_active = true);
|
||||
@@ -586,6 +587,12 @@ private:
|
||||
|
||||
std::atomic<int64_t> m_next_send_inv_to_incoming{0};
|
||||
|
||||
/**
|
||||
* A vector of -bind=<address>:<port>=onion arguments each of which is
|
||||
* an address and port that are designated for incoming Tor connections.
|
||||
*/
|
||||
std::vector<CService> m_onion_binds;
|
||||
|
||||
friend struct CConnmanTest;
|
||||
friend struct ConnmanTestMsg;
|
||||
};
|
||||
@@ -944,6 +951,18 @@ public:
|
||||
assert(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get network the peer connected through.
|
||||
*
|
||||
* Returns Network::NET_ONION for *inbound* onion connections,
|
||||
* and CNetAddr::GetNetClass() otherwise. The latter cannot be used directly
|
||||
* because it doesn't detect the former, and it's not the responsibility of
|
||||
* the CNetAddr class to know the actual network a peer is connected through.
|
||||
*
|
||||
* @return network the peer connected through.
|
||||
*/
|
||||
Network ConnectedThroughNetwork() const;
|
||||
|
||||
protected:
|
||||
mapMsgCmdSize mapSendBytesPerMsgCmd;
|
||||
mapMsgCmdSize mapRecvBytesPerMsgCmd GUARDED_BY(cs_vRecv);
|
||||
@@ -1025,7 +1044,7 @@ public:
|
||||
|
||||
std::set<uint256> orphan_work_set;
|
||||
|
||||
CNode(NodeId id, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn, SOCKET hSocketIn, const CAddress &addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress &addrBindIn, const std::string &addrNameIn, ConnectionType conn_type_in);
|
||||
CNode(NodeId id, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn, SOCKET hSocketIn, const CAddress &addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress &addrBindIn, const std::string &addrNameIn, ConnectionType conn_type_in, bool inbound_onion = false);
|
||||
~CNode();
|
||||
CNode(const CNode&) = delete;
|
||||
CNode& operator=(const CNode&) = delete;
|
||||
@@ -1063,6 +1082,10 @@ private:
|
||||
// Our address, as reported by the peer
|
||||
CService addrLocal GUARDED_BY(cs_addrLocal);
|
||||
mutable RecursiveMutex cs_addrLocal;
|
||||
|
||||
//! Whether this peer connected via our Tor onion service.
|
||||
const bool m_inbound_onion{false};
|
||||
|
||||
public:
|
||||
|
||||
NodeId GetId() const {
|
||||
|
||||
Reference in New Issue
Block a user