mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-23 12:33:26 -05: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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get the bind address for a socket as CAddress */
|
/** Get the bind address for a socket as CService. */
|
||||||
static CAddress GetBindAddress(const Sock& sock)
|
static CService GetBindAddress(const Sock& sock)
|
||||||
{
|
{
|
||||||
CAddress addr_bind;
|
CService addr_bind;
|
||||||
struct sockaddr_storage sockaddr_bind;
|
struct sockaddr_storage sockaddr_bind;
|
||||||
socklen_t sockaddr_bind_len = sizeof(sockaddr_bind);
|
socklen_t sockaddr_bind_len = sizeof(sockaddr_bind);
|
||||||
if (!sock.GetSockName((struct sockaddr*)&sockaddr_bind, &sockaddr_bind_len)) {
|
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
|
// Connect
|
||||||
std::unique_ptr<Sock> sock;
|
std::unique_ptr<Sock> sock;
|
||||||
Proxy proxy;
|
Proxy proxy;
|
||||||
CAddress addr_bind;
|
CService addr_bind;
|
||||||
assert(!addr_bind.IsValid());
|
assert(!addr_bind.IsValid());
|
||||||
std::unique_ptr<i2p::sam::Session> i2p_transient_session;
|
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) {
|
if (connected) {
|
||||||
sock = std::move(conn.sock);
|
sock = std::move(conn.sock);
|
||||||
addr_bind = CAddress{conn.me, NODE_NONE};
|
addr_bind = conn.me;
|
||||||
}
|
}
|
||||||
} else if (use_proxy) {
|
} else if (use_proxy) {
|
||||||
LogPrintLevel(BCLog::PROXY, BCLog::Level::Debug, "Using proxy: %s to connect to %s\n", proxy.ToString(), target_addr.ToStringAddrPort());
|
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;
|
struct sockaddr_storage sockaddr;
|
||||||
socklen_t len = sizeof(sockaddr);
|
socklen_t len = sizeof(sockaddr);
|
||||||
auto sock = hListenSocket.sock->Accept((struct sockaddr*)&sockaddr, &len);
|
auto sock = hListenSocket.sock->Accept((struct sockaddr*)&sockaddr, &len);
|
||||||
CAddress addr;
|
|
||||||
|
|
||||||
if (!sock) {
|
if (!sock) {
|
||||||
const int nErr = WSAGetLastError();
|
const int nErr = WSAGetLastError();
|
||||||
|
@ -1746,13 +1745,14 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CService addr;
|
||||||
if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr, len)) {
|
if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr, len)) {
|
||||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "Unknown socket family\n");
|
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "Unknown socket family\n");
|
||||||
} else {
|
} 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;
|
NetPermissionFlags permission_flags = NetPermissionFlags::None;
|
||||||
hListenSocket.AddSocketPermissionFlags(permission_flags);
|
hListenSocket.AddSocketPermissionFlags(permission_flags);
|
||||||
|
@ -1762,8 +1762,8 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
||||||
|
|
||||||
void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
||||||
NetPermissionFlags permission_flags,
|
NetPermissionFlags permission_flags,
|
||||||
const CAddress& addr_bind,
|
const CService& addr_bind,
|
||||||
const CAddress& addr)
|
const CService& addr)
|
||||||
{
|
{
|
||||||
int nInbound = 0;
|
int nInbound = 0;
|
||||||
|
|
||||||
|
@ -1830,7 +1830,7 @@ void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
||||||
|
|
||||||
CNode* pnode = new CNode(id,
|
CNode* pnode = new CNode(id,
|
||||||
std::move(sock),
|
std::move(sock),
|
||||||
addr,
|
CAddress{addr, NODE_NONE},
|
||||||
CalculateKeyedNetGroup(addr),
|
CalculateKeyedNetGroup(addr),
|
||||||
nonce,
|
nonce,
|
||||||
addr_bind,
|
addr_bind,
|
||||||
|
@ -3105,8 +3105,7 @@ void CConnman::ThreadI2PAcceptIncoming()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateNodeFromAcceptedSocket(std::move(conn.sock), NetPermissionFlags::None,
|
CreateNodeFromAcceptedSocket(std::move(conn.sock), NetPermissionFlags::None, conn.me, conn.peer);
|
||||||
CAddress{conn.me, NODE_NONE}, CAddress{conn.peer, NODE_NONE});
|
|
||||||
|
|
||||||
err_wait = err_wait_begin;
|
err_wait = err_wait_begin;
|
||||||
}
|
}
|
||||||
|
@ -3796,7 +3795,7 @@ CNode::CNode(NodeId idIn,
|
||||||
const CAddress& addrIn,
|
const CAddress& addrIn,
|
||||||
uint64_t nKeyedNetGroupIn,
|
uint64_t nKeyedNetGroupIn,
|
||||||
uint64_t nLocalHostNonceIn,
|
uint64_t nLocalHostNonceIn,
|
||||||
const CAddress& addrBindIn,
|
const CService& addrBindIn,
|
||||||
const std::string& addrNameIn,
|
const std::string& addrNameIn,
|
||||||
ConnectionType conn_type_in,
|
ConnectionType conn_type_in,
|
||||||
bool inbound_onion,
|
bool inbound_onion,
|
||||||
|
@ -3933,7 +3932,7 @@ CSipHasher CConnman::GetDeterministicRandomizer(uint64_t id) const
|
||||||
return CSipHasher(nSeed0, nSeed1).Write(id);
|
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));
|
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
|
// Address of this peer
|
||||||
CAddress addr;
|
CAddress addr;
|
||||||
// Bind address of our side of the connection
|
// Bind address of our side of the connection
|
||||||
CAddress addrBind;
|
CService addrBind;
|
||||||
// Network the peer connected through
|
// Network the peer connected through
|
||||||
Network m_network;
|
Network m_network;
|
||||||
uint32_t m_mapped_as;
|
uint32_t m_mapped_as;
|
||||||
|
@ -707,7 +707,7 @@ public:
|
||||||
// Address of this peer
|
// Address of this peer
|
||||||
const CAddress addr;
|
const CAddress addr;
|
||||||
// Bind address of our side of the connection
|
// Bind address of our side of the connection
|
||||||
const CAddress addrBind;
|
const CService addrBind;
|
||||||
const std::string m_addr_name;
|
const std::string m_addr_name;
|
||||||
/** The pszDest argument provided to ConnectNode(). Only used for reconnections. */
|
/** The pszDest argument provided to ConnectNode(). Only used for reconnections. */
|
||||||
const std::string m_dest;
|
const std::string m_dest;
|
||||||
|
@ -883,7 +883,7 @@ public:
|
||||||
const CAddress& addrIn,
|
const CAddress& addrIn,
|
||||||
uint64_t nKeyedNetGroupIn,
|
uint64_t nKeyedNetGroupIn,
|
||||||
uint64_t nLocalHostNonceIn,
|
uint64_t nLocalHostNonceIn,
|
||||||
const CAddress& addrBindIn,
|
const CService& addrBindIn,
|
||||||
const std::string& addrNameIn,
|
const std::string& addrNameIn,
|
||||||
ConnectionType conn_type_in,
|
ConnectionType conn_type_in,
|
||||||
bool inbound_onion,
|
bool inbound_onion,
|
||||||
|
@ -1312,8 +1312,8 @@ private:
|
||||||
*/
|
*/
|
||||||
void CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
void CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock,
|
||||||
NetPermissionFlags permission_flags,
|
NetPermissionFlags permission_flags,
|
||||||
const CAddress& addr_bind,
|
const CService& addr_bind,
|
||||||
const CAddress& addr);
|
const CService& addr);
|
||||||
|
|
||||||
void DisconnectNodes() EXCLUSIVE_LOCKS_REQUIRED(!m_reconnections_mutex, !m_nodes_mutex);
|
void DisconnectNodes() EXCLUSIVE_LOCKS_REQUIRED(!m_reconnections_mutex, !m_nodes_mutex);
|
||||||
void NotifyNumConnectionsChanged();
|
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 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);
|
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 CNetAddr& ip);
|
||||||
CNode* FindNode(const std::string& addrName);
|
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},
|
/*addrIn=*/CAddress{CService{peer_out_in_addr, 8333}, NODE_NETWORK},
|
||||||
/*nKeyedNetGroupIn=*/0,
|
/*nKeyedNetGroupIn=*/0,
|
||||||
/*nLocalHostNonceIn=*/0,
|
/*nLocalHostNonceIn=*/0,
|
||||||
/*addrBindIn=*/CAddress{},
|
/*addrBindIn=*/CService{},
|
||||||
/*addrNameIn=*/std::string{},
|
/*addrNameIn=*/std::string{},
|
||||||
/*conn_type_in=*/ConnectionType::OUTBOUND_FULL_RELAY,
|
/*conn_type_in=*/ConnectionType::OUTBOUND_FULL_RELAY,
|
||||||
/*inbound_onion=*/false};
|
/*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},
|
/*addrIn=*/CAddress{CService{peer_in_in_addr, 8333}, NODE_NETWORK},
|
||||||
/*nKeyedNetGroupIn=*/0,
|
/*nKeyedNetGroupIn=*/0,
|
||||||
/*nLocalHostNonceIn=*/0,
|
/*nLocalHostNonceIn=*/0,
|
||||||
/*addrBindIn=*/CAddress{},
|
/*addrBindIn=*/CService{},
|
||||||
/*addrNameIn=*/std::string{},
|
/*addrNameIn=*/std::string{},
|
||||||
/*conn_type_in=*/ConnectionType::INBOUND,
|
/*conn_type_in=*/ConnectionType::INBOUND,
|
||||||
/*inbound_onion=*/false};
|
/*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},
|
/*addrIn=*/CAddress{CService{peer_in_addr, 8333}, NODE_NETWORK},
|
||||||
/*nKeyedNetGroupIn=*/0,
|
/*nKeyedNetGroupIn=*/0,
|
||||||
/*nLocalHostNonceIn=*/0,
|
/*nLocalHostNonceIn=*/0,
|
||||||
/*addrBindIn=*/CAddress{},
|
/*addrBindIn=*/CService{},
|
||||||
/*addrNameIn=*/std::string{},
|
/*addrNameIn=*/std::string{},
|
||||||
/*conn_type_in=*/ConnectionType::OUTBOUND_FULL_RELAY,
|
/*conn_type_in=*/ConnectionType::OUTBOUND_FULL_RELAY,
|
||||||
/*inbound_onion=*/false};
|
/*inbound_onion=*/false};
|
||||||
|
|
Loading…
Add table
Reference in a new issue