0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-03 09:56:38 -05:00

[netgroupman] Move asmap checksum calculation to NetGroupManager

This commit is contained in:
John Newbery 2021-09-01 16:34:23 +01:00
parent 1b978a7e8c
commit 4709fc2019
3 changed files with 14 additions and 9 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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.
*