diff --git a/src/netaddress.h b/src/netaddress.h --- a/src/netaddress.h +++ b/src/netaddress.h @@ -193,7 +193,8 @@ explicit CService(const struct sockaddr_in6 &addr); SERIALIZE_METHODS(CService, obj) { - READWRITE(obj.ip, Using>(obj.port)); + READWRITEAS(CNetAddr, obj); + READWRITE(Using>(obj.port)); } }; diff --git a/src/netaddress.cpp b/src/netaddress.cpp --- a/src/netaddress.cpp +++ b/src/netaddress.cpp @@ -755,14 +755,12 @@ * @returns An identifier unique to this service's address and port number. */ std::vector CService::GetKey() const { - std::vector vKey; - vKey.resize(18); - memcpy(vKey.data(), ip, 16); + auto key = GetAddrBytes(); // most significant byte of our port - vKey[16] = port / 0x100; + key.push_back(port / 0x100); // least significant byte of our port - vKey[17] = port & 0x0FF; - return vKey; + key.push_back(port & 0x0FF); + return key; } std::string CService::ToStringPort() const {