Skip to content

Commit

Permalink
Restore compatibility with old CSubNet serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
sipa committed Oct 12, 2020
1 parent 0b2abaa commit 883cea7
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/netaddress.h
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,21 @@ class CSubNet
friend bool operator!=(const CSubNet& a, const CSubNet& b) { return !(a == b); }
friend bool operator<(const CSubNet& a, const CSubNet& b);

SERIALIZE_METHODS(CSubNet, obj) { READWRITE(obj.network, obj.netmask, obj.valid); }
SERIALIZE_METHODS(CSubNet, obj)
{
READWRITE(obj.network);
if (obj.network.IsIPv4()) {
// Before commit 102867c587f5f7954232fb8ed8e85cda78bb4d32, CSubNet used the last 4 bytes of netmask
// to store the relevant bytes for an IPv4 mask. For compatiblity reasons, keep doing so in
// serialized form.
unsigned char dummy[12] = {0};
READWRITE(dummy);
READWRITE(MakeSpan(obj.netmask).first(4));
} else {
READWRITE(obj.netmask);
}
READWRITE(obj.valid);
}
};

/** A combination of a network address (CNetAddr) and a (TCP) port */
Expand Down

0 comments on commit 883cea7

Please sign in to comment.