aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/addrman.cpp11
-rw-r--r--src/netgroup.cpp8
-rw-r--r--src/netgroup.h4
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.
*