mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 19:42:46 +01:00
merge bitcoin#29058: use v2transport for manual/addrfetch connections, add to -netinfo
This commit is contained in:
parent
92e862acb2
commit
b2ac426a24
@ -413,6 +413,7 @@ private:
|
||||
std::string conn_type;
|
||||
std::string network;
|
||||
std::string age;
|
||||
std::string transport_protocol_type;
|
||||
double min_ping;
|
||||
double ping;
|
||||
int64_t addr_processed;
|
||||
@ -517,10 +518,11 @@ public:
|
||||
const std::string addr{peer["addr"].get_str()};
|
||||
const std::string age{conn_time == 0 ? "" : ToString((m_time_now - conn_time) / 60)};
|
||||
const std::string sub_version{peer["subver"].get_str()};
|
||||
const std::string transport{peer["transport_protocol_type"].get_str()};
|
||||
const bool is_addr_relay_enabled{peer["addr_relay_enabled"].isNull() ? false : peer["addr_relay_enabled"].get_bool()};
|
||||
const bool is_bip152_hb_from{peer["bip152_hb_from"].get_bool()};
|
||||
const bool is_bip152_hb_to{peer["bip152_hb_to"].get_bool()};
|
||||
m_peers.push_back({addr, sub_version, conn_type, NETWORK_SHORT_NAMES[network_id], age, min_ping, ping, addr_processed, addr_rate_limited, last_blck, last_recv, last_send, last_trxn, peer_id, mapped_as, version, is_addr_relay_enabled, is_bip152_hb_from, is_bip152_hb_to, is_block_relay, is_outbound});
|
||||
m_peers.push_back({addr, sub_version, conn_type, NETWORK_SHORT_NAMES[network_id], age, transport, min_ping, ping, addr_processed, addr_rate_limited, last_blck, last_recv, last_send, last_trxn, peer_id, mapped_as, version, is_addr_relay_enabled, is_bip152_hb_from, is_bip152_hb_to, is_block_relay, is_outbound});
|
||||
m_max_addr_length = std::max(addr.length() + 1, m_max_addr_length);
|
||||
m_max_addr_processed_length = std::max(ToString(addr_processed).length(), m_max_addr_processed_length);
|
||||
m_max_addr_rate_limited_length = std::max(ToString(addr_rate_limited).length(), m_max_addr_rate_limited_length);
|
||||
@ -536,7 +538,7 @@ public:
|
||||
// Report detailed peer connections list sorted by direction and minimum ping time.
|
||||
if (DetailsRequested() && !m_peers.empty()) {
|
||||
std::sort(m_peers.begin(), m_peers.end());
|
||||
result += strprintf("<-> type net mping ping send recv txn blk hb %*s%*s%*s ",
|
||||
result += strprintf("<-> type net tp mping ping send recv txn blk hb %*s%*s%*s ",
|
||||
m_max_addr_processed_length, "addrp",
|
||||
m_max_addr_rate_limited_length, "addrl",
|
||||
m_max_age_length, "age");
|
||||
@ -545,10 +547,11 @@ public:
|
||||
for (const Peer& peer : m_peers) {
|
||||
std::string version{ToString(peer.version) + peer.sub_version};
|
||||
result += strprintf(
|
||||
"%3s %6s %5s%7s%7s%5s%5s%5s%5s %2s %*s%*s%*s%*i %*s %-*s%s\n",
|
||||
"%3s %6s %5s %2s%7s%7s%5s%5s%5s%5s %2s %*s%*s%*s%*i %*s %-*s%s\n",
|
||||
peer.is_outbound ? "out" : "in",
|
||||
ConnectionTypeForNetinfo(peer.conn_type),
|
||||
peer.network,
|
||||
peer.transport_protocol_type == "detecting" ? "*" : peer.transport_protocol_type,
|
||||
PingTimeToString(peer.min_ping),
|
||||
PingTimeToString(peer.ping),
|
||||
peer.last_send ? ToString(m_time_now - peer.last_send) : "",
|
||||
@ -570,7 +573,7 @@ public:
|
||||
IsAddressSelected() ? peer.addr : "",
|
||||
IsVersionSelected() && version != "0" ? version : "");
|
||||
}
|
||||
result += strprintf(" ms ms sec sec min min %*s\n\n", m_max_age_length, "min");
|
||||
result += strprintf(" ms ms sec sec min min %*s\n\n", m_max_age_length, "min");
|
||||
}
|
||||
|
||||
// Report peer connection totals by type.
|
||||
@ -657,6 +660,7 @@ public:
|
||||
" \"feeler\" - short-lived connection for testing addresses\n"
|
||||
" \"addr\" - address fetch; short-lived connection for requesting addresses\n"
|
||||
" net Network the peer connected through (\"ipv4\", \"ipv6\", \"onion\", \"i2p\", \"cjdns\", or \"npr\" (not publicly routable))\n"
|
||||
" tp Transport protocol used for the connection (\"v1\", \"v2\" or \"*\" if detecting)\n"
|
||||
" mping Minimum observed ping time, in milliseconds (ms)\n"
|
||||
" ping Last observed ping time, in milliseconds (ms)\n"
|
||||
" send Time since last message sent to the peer, in seconds\n"
|
||||
|
15
src/net.cpp
15
src/net.cpp
@ -3023,10 +3023,13 @@ void CConnman::ProcessAddrFetch()
|
||||
strDest = m_addr_fetches.front();
|
||||
m_addr_fetches.pop_front();
|
||||
}
|
||||
// Attempt v2 connection if we support v2 - we'll reconnect with v1 if our
|
||||
// peer doesn't support it or immediately disconnects us for another reason.
|
||||
const bool use_v2transport(GetLocalServices() & NODE_P2P_V2);
|
||||
CAddress addr;
|
||||
CSemaphoreGrant grant(*semOutbound, /*fTry=*/true);
|
||||
if (grant) {
|
||||
OpenNetworkConnection(addr, false, std::move(grant), strDest.c_str(), ConnectionType::ADDR_FETCH, /*use_v2transport=*/false);
|
||||
OpenNetworkConnection(addr, false, std::move(grant), strDest.c_str(), ConnectionType::ADDR_FETCH, use_v2transport);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3100,12 +3103,15 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect, CDe
|
||||
// Connect to specific addresses
|
||||
if (!connect.empty())
|
||||
{
|
||||
// Attempt v2 connection if we support v2 - we'll reconnect with v1 if our
|
||||
// peer doesn't support it or immediately disconnects us for another reason.
|
||||
const bool use_v2transport(GetLocalServices() & NODE_P2P_V2);
|
||||
for (int64_t nLoop = 0;; nLoop++)
|
||||
{
|
||||
for (const std::string& strAddr : connect)
|
||||
{
|
||||
CAddress addr(CService(), NODE_NONE);
|
||||
OpenNetworkConnection(addr, false, {}, strAddr.c_str(), ConnectionType::MANUAL, /*use_v2transport=*/false);
|
||||
OpenNetworkConnection(addr, false, {}, strAddr.c_str(), ConnectionType::MANUAL, /*use_v2transport=*/use_v2transport);
|
||||
for (int i = 0; i < 10 && i < nLoop; i++)
|
||||
{
|
||||
if (!interruptNet.sleep_for(std::chrono::milliseconds(500)))
|
||||
@ -3114,6 +3120,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect, CDe
|
||||
}
|
||||
if (!interruptNet.sleep_for(std::chrono::milliseconds(500)))
|
||||
return;
|
||||
PerformReconnections();
|
||||
}
|
||||
}
|
||||
|
||||
@ -3527,11 +3534,11 @@ void CConnman::ThreadOpenAddedConnections()
|
||||
grant = CSemaphoreGrant(*semAddnode, /*fTry=*/true);
|
||||
}
|
||||
}
|
||||
// See if any reconnections are desired.
|
||||
PerformReconnections();
|
||||
// Retry every 60 seconds if a connection was attempted, otherwise two seconds
|
||||
if (!interruptNet.sleep_for(std::chrono::seconds(tried ? 60 : 2)))
|
||||
return;
|
||||
// See if any reconnections are desired.
|
||||
PerformReconnections();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1233,10 +1233,11 @@ public:
|
||||
vWhitelistedRange = connOptions.vWhitelistedRange;
|
||||
{
|
||||
LOCK(m_added_nodes_mutex);
|
||||
|
||||
// Attempt v2 connection if we support v2 - we'll reconnect with v1 if our
|
||||
// peer doesn't support it or immediately disconnects us for another reason.
|
||||
const bool use_v2transport(GetLocalServices() & NODE_P2P_V2);
|
||||
for (const std::string& added_node : connOptions.m_added_nodes) {
|
||||
// -addnode cli arg does not currently have a way to signal BIP324 support
|
||||
m_added_node_params.push_back({added_node, false});
|
||||
m_added_node_params.push_back({added_node, use_v2transport});
|
||||
}
|
||||
}
|
||||
socketEventsMode = connOptions.socketEventsMode;
|
||||
|
Loading…
Reference in New Issue
Block a user