aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@protonmail.com>2020-07-15 20:59:00 +0200
committerWladimir J. van der Laan <laanwj@protonmail.com>2020-07-15 21:17:18 +0200
commit3864219d4074d289799634378d85cccbcc2e6e56 (patch)
tree5929a1edc3b7d5c868c417f1f488126b88345d76
parent31bdd86631dd95e45b82c036c907ae8007c8a682 (diff)
parentbc74a40a56128f81f11151d5966f53b82f19038c (diff)
downloadbitcoin-3864219d4074d289799634378d85cccbcc2e6e56.tar.xz
Merge #19360: net: improve encapsulation of CNetAddr
bc74a40a56128f81f11151d5966f53b82f19038c net: improve encapsulation of CNetAddr (Vasil Dimov) Pull request description: 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). (chopped off from https://github.com/bitcoin/bitcoin/pull/19031 to ease review) ACKs for top commit: dongcarl: ACK bc74a40a56128f81f11151d5966f53b82f19038c naumenkogs: ACK bc74a40 fjahr: Code review ACK bc74a40 laanwj: code review ACK bc74a40a56128f81f11151d5966f53b82f19038c jonatack: ACK bc74a40a56128f81f11151d5966f53b82f19038c jnewbery: ACK bc74a40a5 Tree-SHA512: 29a203905538e8311e3249b78565abe69ce36dc4ec239bec85c726c30e1a7b55b0aaf5c6659b676935008e068cfa53d716f7a598469064108daf130f94329a5d
-rw-r--r--src/netaddress.cpp10
-rw-r--r--src/netaddress.h6
2 files changed, 9 insertions, 7 deletions
diff --git a/src/netaddress.cpp b/src/netaddress.cpp
index 6744391616..0aaba440b8 100644
--- a/src/netaddress.cpp
+++ b/src/netaddress.cpp
@@ -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
diff --git a/src/netaddress.h b/src/netaddress.h
index c201012154..f2daad7fb6 100644
--- a/src/netaddress.h
+++ b/src/netaddress.h
@@ -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);