diff options
author | John Newbery <john@johnnewbery.com> | 2021-09-01 16:34:23 +0100 |
---|---|---|
committer | John Newbery <john@johnnewbery.com> | 2022-04-20 14:35:53 +0100 |
commit | 4709fc2019e27e74be02dc5fc123b9f6f46d7990 (patch) | |
tree | 25170c62329cab5a2a8afe7989f785f59d7ac9a0 /src | |
parent | 1b978a7e8c71dcc1501705022e66f6779c8c4528 (diff) | |
download | bitcoin-4709fc2019e27e74be02dc5fc123b9f6f46d7990.tar.xz |
[netgroupman] Move asmap checksum calculation to NetGroupManager
Diffstat (limited to 'src')
-rw-r--r-- | src/addrman.cpp | 11 | ||||
-rw-r--r-- | src/netgroup.cpp | 8 | ||||
-rw-r--r-- | src/netgroup.h | 4 |
3 files changed, 14 insertions, 9 deletions
diff --git a/src/addrman.cpp b/src/addrman.cpp index 7abec560eb..f74729d47b 100644 --- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -218,11 +218,7 @@ void AddrManImpl::Serialize(Stream& s_) const } // Store asmap checksum after bucket entries so that it // can be ignored by older clients for backward compatibility. - uint256 asmap_checksum; - if (m_netgroupman.GetAsmap().size() != 0) { - asmap_checksum = SerializeHash(m_netgroupman.GetAsmap()); - } - s << asmap_checksum; + s << m_netgroupman.GetAsmapChecksum(); } template <typename Stream> @@ -335,10 +331,7 @@ void AddrManImpl::Unserialize(Stream& s_) // If the bucket count and asmap checksum haven't changed, then attempt // to restore the entries to the buckets/positions they were in before // serialization. - uint256 supplied_asmap_checksum; - if (m_netgroupman.GetAsmap().size() != 0) { - supplied_asmap_checksum = SerializeHash(m_netgroupman.GetAsmap()); - } + uint256 supplied_asmap_checksum{m_netgroupman.GetAsmapChecksum()}; uint256 serialized_asmap_checksum; if (format >= Format::V2_ASMAP) { s >> serialized_asmap_checksum; diff --git a/src/netgroup.cpp b/src/netgroup.cpp index a2f1f3460f..5f42d6c719 100644 --- a/src/netgroup.cpp +++ b/src/netgroup.cpp @@ -4,8 +4,16 @@ #include <netgroup.h> +#include <hash.h> #include <util/asmap.h> +uint256 NetGroupManager::GetAsmapChecksum() const +{ + if (!m_asmap.size()) return {}; + + return SerializeHash(m_asmap); +} + std::vector<unsigned char> NetGroupManager::GetGroup(const CNetAddr& address) const { std::vector<unsigned char> vchRet; diff --git a/src/netgroup.h b/src/netgroup.h index 4e4edb8a88..6f495b166b 100644 --- a/src/netgroup.h +++ b/src/netgroup.h @@ -6,6 +6,7 @@ #define BITCOIN_NETGROUP_H #include <netaddress.h> +#include <uint256.h> #include <vector> @@ -22,6 +23,9 @@ public: * exists, since the data is const. */ const std::vector<bool>& GetAsmap() const { return m_asmap; } + /** Get a checksum identifying the asmap being used. */ + uint256 GetAsmapChecksum() const; + /** * Get the canonical identifier of the network group for address. * |