net: improve encapsulation of CNetAddr

Do not access `CNetAddr::ip` directly from `CService` methods.

This improvement will help later when we change the type of
`CNetAddr::ip` (in the BIP155 implementation).

Co-authored-by: Carl Dong <contact@carldong.me>
This commit is contained in:
Vasil Dimov 2020-05-13 18:45:39 +02:00
parent fd9db45c3e
commit bc74a40a56
No known key found for this signature in database
GPG key ID: 54DF06F64B55CBBF
2 changed files with 9 additions and 7 deletions

View file

@ -726,12 +726,10 @@ bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const
*/
std::vector<unsigned char> CService::GetKey() const
{
std::vector<unsigned char> vKey;
vKey.resize(18);
memcpy(vKey.data(), ip, 16);
vKey[16] = port / 0x100; // most significant byte of our port
vKey[17] = port & 0x0FF; // least significant byte of our port
return vKey;
auto key = GetAddrBytes();
key.push_back(port / 0x100); // most significant byte of our port
key.push_back(port & 0x0FF); // least significant byte of our port
return key;
}
std::string CService::ToStringPort() const

View file

@ -160,7 +160,11 @@ class CService : public CNetAddr
CService(const struct in6_addr& ipv6Addr, uint16_t port);
explicit CService(const struct sockaddr_in6& addr);
SERIALIZE_METHODS(CService, obj) { READWRITE(obj.ip, Using<BigEndianFormatter<2>>(obj.port)); }
SERIALIZE_METHODS(CService, obj)
{
READWRITEAS(CNetAddr, obj);
READWRITE(Using<BigEndianFormatter<2>>(obj.port));
}
};
bool SanityCheckASMap(const std::vector<bool>& asmap);