diff options
author | Suhas Daftuar <sdaftuar@gmail.com> | 2022-08-12 10:05:22 -0400 |
---|---|---|
committer | Suhas Daftuar <sdaftuar@gmail.com> | 2022-08-29 08:10:35 -0400 |
commit | 03712dddfbb9fe0dc7a2ead53c65106189f5c803 (patch) | |
tree | 26fa9f85ab867705e094f9b4a7826e7553021dfe /src | |
parent | 150a5486db50ff77c91765392149000029c8a309 (diff) | |
download | bitcoin-03712dddfbb9fe0dc7a2ead53c65106189f5c803.tar.xz |
Expose HeadersSyncState::m_current_height in getpeerinfo()
Diffstat (limited to 'src')
-rw-r--r-- | src/headerssync.h | 3 | ||||
-rw-r--r-- | src/net_processing.cpp | 6 | ||||
-rw-r--r-- | src/net_processing.h | 1 | ||||
-rw-r--r-- | src/rpc/net.cpp | 2 |
4 files changed, 12 insertions, 0 deletions
diff --git a/src/headerssync.h b/src/headerssync.h index b694407792..01d55eb44e 100644 --- a/src/headerssync.h +++ b/src/headerssync.h @@ -118,6 +118,9 @@ public: /** Return the current state of our download */ State GetState() const { return m_download_state; } + /** Return the height reached during the PRESYNC phase */ + int64_t GetPresyncHeight() const { return m_current_height; } + /** Construct a HeadersSyncState object representing a headers sync via this * download-twice mechanism). * diff --git a/src/net_processing.cpp b/src/net_processing.cpp index ac19593b0f..f471e96b50 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1566,6 +1566,12 @@ bool PeerManagerImpl::GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) c stats.m_addr_processed = peer->m_addr_processed.load(); stats.m_addr_rate_limited = peer->m_addr_rate_limited.load(); stats.m_addr_relay_enabled = peer->m_addr_relay_enabled.load(); + { + LOCK(peer->m_headers_sync_mutex); + if (peer->m_headers_sync) { + stats.presync_height = peer->m_headers_sync->GetPresyncHeight(); + } + } return true; } diff --git a/src/net_processing.h b/src/net_processing.h index bcda9614d4..0a882b1e53 100644 --- a/src/net_processing.h +++ b/src/net_processing.h @@ -35,6 +35,7 @@ struct CNodeStateStats { uint64_t m_addr_rate_limited = 0; bool m_addr_relay_enabled{false}; ServiceFlags their_services; + int64_t presync_height{-1}; }; class PeerManager : public CValidationInterface, public NetEventsInterface diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index 06f46040b8..88584ff25f 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -132,6 +132,7 @@ static RPCHelpMan getpeerinfo() {RPCResult::Type::BOOL, "bip152_hb_to", "Whether we selected peer as (compact blocks) high-bandwidth peer"}, {RPCResult::Type::BOOL, "bip152_hb_from", "Whether peer selected us as (compact blocks) high-bandwidth peer"}, {RPCResult::Type::NUM, "startingheight", /*optional=*/true, "The starting height (block) of the peer"}, + {RPCResult::Type::NUM, "presynced_headers", /*optional=*/true, "The current height of header pre-synchronization with this peer, or -1 if no low-work sync is in progress"}, {RPCResult::Type::NUM, "synced_headers", /*optional=*/true, "The last header we have in common with this peer"}, {RPCResult::Type::NUM, "synced_blocks", /*optional=*/true, "The last block we have in common with this peer"}, {RPCResult::Type::ARR, "inflight", /*optional=*/true, "", @@ -226,6 +227,7 @@ static RPCHelpMan getpeerinfo() obj.pushKV("bip152_hb_from", stats.m_bip152_highbandwidth_from); if (fStateStats) { obj.pushKV("startingheight", statestats.m_starting_height); + obj.pushKV("presynced_headers", statestats.presync_height); obj.pushKV("synced_headers", statestats.nSyncHeight); obj.pushKV("synced_blocks", statestats.nCommonHeight); UniValue heights(UniValue::VARR); |