mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-21 14:34:49 +01:00
net: reduce CAddress usage to CService or CNetAddr
* `CConnman::CalculateKeyedNetGroup()` needs `CNetAddr`, not `CAddress`, thus change its argument. * Both callers of `CConnman::CreateNodeFromAcceptedSocket()` create a dummy `CAddress` from `CService`, so use `CService` instead. * `GetBindAddress()` only needs to return `CService`. * `CNode::addrBind` only needs to be `CService`.
This commit is contained in:
parent
55cf39e4c5
commit
cd4bfaee10
3 changed files with 23 additions and 24 deletions
29
src/net.cpp
29
src/net.cpp
|
@ -380,10 +380,10 @@ bool CConnman::CheckIncomingNonce(uint64_t nonce)
|
|||
return true;
|
||||
}
|
||||
|
||||
/** Get the bind address for a socket as CAddress */
|
||||
static CAddress GetBindAddress(const Sock& sock)
|
||||
/** Get the bind address for a socket as CService. */
|
||||
static CService GetBindAddress(const Sock& sock)
|
||||
{
|
||||
CAddress addr_bind;
|
||||
CService addr_bind;
|
||||
struct sockaddr_storage sockaddr_bind;
|
||||
socklen_t sockaddr_bind_len = sizeof(sockaddr_bind);
|
||||
if (!sock.GetSockName((struct sockaddr*)&sockaddr_bind, &sockaddr_bind_len)) {
|
||||
|
@ -458,7 +458,7 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
|
|||
// Connect
|
||||
std::unique_ptr<Sock> sock;
|
||||
Proxy proxy;
|
||||
CAddress addr_bind;
|
||||
CService addr_bind;
|
||||
assert(!addr_bind.IsValid());
|
||||
std::unique_ptr<i2p::sam::Session> i2p_transient_session;
|
||||
|
||||
|
@ -495,7 +495,7 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
|
|||
|
||||
if (connected) {
|
||||
sock = std::move(conn.sock);
|
||||
addr_bind = CAddress{conn.me, NODE_NONE};
|
||||
addr_bind = conn.me;
|
||||
}
|
||||
} else if (use_proxy) {
|
||||
LogPrintLevel(BCLog::PROXY, BCLog::Level::Debug, "Using proxy: %s to connect to %s\n", proxy.ToString(), target_addr.ToStringAddrPort());
|
||||
|
@ -1736,7 +1736,6 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
|||
struct sockaddr_storage sockaddr;
|
||||
socklen_t len = sizeof(sockaddr);
|
||||
auto sock = hListenSocket.sock->Accept((struct sockaddr*)&sockaddr, &len);
|
||||
CAddress addr;
|
||||
|
||||
if (!sock) {
|
||||
const int nErr = WSAGetLastError();
|
||||
|
@ -1746,13 +1745,14 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
|||
return;
|
||||
}
|
||||
|
||||
CService addr;
|
||||
if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr, len)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "Unknown socket family\n");
|
||||
} else {
|
||||
addr = CAddress{MaybeFlipIPv6toCJDNS(addr), NODE_NONE};
|
||||
addr = MaybeFlipIPv6toCJDNS(addr);
|
||||
}
|
||||
|
||||
const CAddress addr_bind{MaybeFlipIPv6toCJDNS(GetBindAddress(*sock)), NODE_NONE};
|
||||
const CService addr_bind{MaybeFlipIPv6toCJDNS(GetBindAddress(*sock))};
|
||||
|
||||
NetPermissionFlags permission_flags = NetPermissionFlags::None;
|
||||
hListenSocket.AddSocketPermissionFlags(permission_flags);
|
||||
|
@ -1762,8 +1762,8 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
|||
|
||||
void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
||||
NetPermissionFlags permission_flags,
|
||||
const CAddress& addr_bind,
|
||||
const CAddress& addr)
|
||||
const CService& addr_bind,
|
||||
const CService& addr)
|
||||
{
|
||||
int nInbound = 0;
|
||||
|
||||
|
@ -1830,7 +1830,7 @@ void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
|||
|
||||
CNode* pnode = new CNode(id,
|
||||
std::move(sock),
|
||||
addr,
|
||||
CAddress{addr, NODE_NONE},
|
||||
CalculateKeyedNetGroup(addr),
|
||||
nonce,
|
||||
addr_bind,
|
||||
|
@ -3105,8 +3105,7 @@ void CConnman::ThreadI2PAcceptIncoming()
|
|||
continue;
|
||||
}
|
||||
|
||||
CreateNodeFromAcceptedSocket(std::move(conn.sock), NetPermissionFlags::None,
|
||||
CAddress{conn.me, NODE_NONE}, CAddress{conn.peer, NODE_NONE});
|
||||
CreateNodeFromAcceptedSocket(std::move(conn.sock), NetPermissionFlags::None, conn.me, conn.peer);
|
||||
|
||||
err_wait = err_wait_begin;
|
||||
}
|
||||
|
@ -3796,7 +3795,7 @@ CNode::CNode(NodeId idIn,
|
|||
const CAddress& addrIn,
|
||||
uint64_t nKeyedNetGroupIn,
|
||||
uint64_t nLocalHostNonceIn,
|
||||
const CAddress& addrBindIn,
|
||||
const CService& addrBindIn,
|
||||
const std::string& addrNameIn,
|
||||
ConnectionType conn_type_in,
|
||||
bool inbound_onion,
|
||||
|
@ -3933,7 +3932,7 @@ CSipHasher CConnman::GetDeterministicRandomizer(uint64_t id) const
|
|||
return CSipHasher(nSeed0, nSeed1).Write(id);
|
||||
}
|
||||
|
||||
uint64_t CConnman::CalculateKeyedNetGroup(const CAddress& address) const
|
||||
uint64_t CConnman::CalculateKeyedNetGroup(const CNetAddr& address) const
|
||||
{
|
||||
std::vector<unsigned char> vchNetGroup(m_netgroupman.GetGroup(address));
|
||||
|
||||
|
|
12
src/net.h
12
src/net.h
|
@ -211,7 +211,7 @@ public:
|
|||
// Address of this peer
|
||||
CAddress addr;
|
||||
// Bind address of our side of the connection
|
||||
CAddress addrBind;
|
||||
CService addrBind;
|
||||
// Network the peer connected through
|
||||
Network m_network;
|
||||
uint32_t m_mapped_as;
|
||||
|
@ -707,7 +707,7 @@ public:
|
|||
// Address of this peer
|
||||
const CAddress addr;
|
||||
// Bind address of our side of the connection
|
||||
const CAddress addrBind;
|
||||
const CService addrBind;
|
||||
const std::string m_addr_name;
|
||||
/** The pszDest argument provided to ConnectNode(). Only used for reconnections. */
|
||||
const std::string m_dest;
|
||||
|
@ -883,7 +883,7 @@ public:
|
|||
const CAddress& addrIn,
|
||||
uint64_t nKeyedNetGroupIn,
|
||||
uint64_t nLocalHostNonceIn,
|
||||
const CAddress& addrBindIn,
|
||||
const CService& addrBindIn,
|
||||
const std::string& addrNameIn,
|
||||
ConnectionType conn_type_in,
|
||||
bool inbound_onion,
|
||||
|
@ -1312,8 +1312,8 @@ private:
|
|||
*/
|
||||
void CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
||||
NetPermissionFlags permission_flags,
|
||||
const CAddress& addr_bind,
|
||||
const CAddress& addr);
|
||||
const CService& addr_bind,
|
||||
const CService& addr);
|
||||
|
||||
void DisconnectNodes() EXCLUSIVE_LOCKS_REQUIRED(!m_reconnections_mutex, !m_nodes_mutex);
|
||||
void NotifyNumConnectionsChanged();
|
||||
|
@ -1350,7 +1350,7 @@ private:
|
|||
void ThreadSocketHandler() EXCLUSIVE_LOCKS_REQUIRED(!m_total_bytes_sent_mutex, !mutexMsgProc, !m_nodes_mutex, !m_reconnections_mutex);
|
||||
void ThreadDNSAddressSeed() EXCLUSIVE_LOCKS_REQUIRED(!m_addr_fetches_mutex, !m_nodes_mutex);
|
||||
|
||||
uint64_t CalculateKeyedNetGroup(const CAddress& ad) const;
|
||||
uint64_t CalculateKeyedNetGroup(const CNetAddr& ad) const;
|
||||
|
||||
CNode* FindNode(const CNetAddr& ip);
|
||||
CNode* FindNode(const std::string& addrName);
|
||||
|
|
|
@ -671,7 +671,7 @@ BOOST_AUTO_TEST_CASE(get_local_addr_for_peer_port)
|
|||
/*addrIn=*/CAddress{CService{peer_out_in_addr, 8333}, NODE_NETWORK},
|
||||
/*nKeyedNetGroupIn=*/0,
|
||||
/*nLocalHostNonceIn=*/0,
|
||||
/*addrBindIn=*/CAddress{},
|
||||
/*addrBindIn=*/CService{},
|
||||
/*addrNameIn=*/std::string{},
|
||||
/*conn_type_in=*/ConnectionType::OUTBOUND_FULL_RELAY,
|
||||
/*inbound_onion=*/false};
|
||||
|
@ -692,7 +692,7 @@ BOOST_AUTO_TEST_CASE(get_local_addr_for_peer_port)
|
|||
/*addrIn=*/CAddress{CService{peer_in_in_addr, 8333}, NODE_NETWORK},
|
||||
/*nKeyedNetGroupIn=*/0,
|
||||
/*nLocalHostNonceIn=*/0,
|
||||
/*addrBindIn=*/CAddress{},
|
||||
/*addrBindIn=*/CService{},
|
||||
/*addrNameIn=*/std::string{},
|
||||
/*conn_type_in=*/ConnectionType::INBOUND,
|
||||
/*inbound_onion=*/false};
|
||||
|
@ -829,7 +829,7 @@ BOOST_AUTO_TEST_CASE(initial_advertise_from_version_message)
|
|||
/*addrIn=*/CAddress{CService{peer_in_addr, 8333}, NODE_NETWORK},
|
||||
/*nKeyedNetGroupIn=*/0,
|
||||
/*nLocalHostNonceIn=*/0,
|
||||
/*addrBindIn=*/CAddress{},
|
||||
/*addrBindIn=*/CService{},
|
||||
/*addrNameIn=*/std::string{},
|
||||
/*conn_type_in=*/ConnectionType::OUTBOUND_FULL_RELAY,
|
||||
/*inbound_onion=*/false};
|
||||
|
|
Loading…
Add table
Reference in a new issue