diff --git a/node/Address.hpp b/node/Address.hpp index 17d617cc1..ace844219 100644 --- a/node/Address.hpp +++ b/node/Address.hpp @@ -31,9 +31,10 @@ class Address : public TriviallyCopyable { public: ZT_INLINE Address() noexcept : _a(0) {} - explicit ZT_INLINE Address(const uint64_t a) noexcept : _a(a) {} + ZT_INLINE Address(const uint64_t a) noexcept : _a(a) {} explicit ZT_INLINE Address(const uint8_t b[5]) noexcept : _a(((uint64_t)b[0] << 32U) | ((uint64_t)b[1] << 24U) | ((uint64_t)b[2] << 16U) | ((uint64_t)b[3] << 8U) | (uint64_t)b[4]) {} + ZT_INLINE Address &operator=(const Address &a) noexcept { _a = a._a; return *this; } ZT_INLINE Address &operator=(const uint64_t a) noexcept { _a = a; return *this; } /** diff --git a/node/Protocol.hpp b/node/Protocol.hpp index 6e8ec8e3f..3a26d5451 100644 --- a/node/Protocol.hpp +++ b/node/Protocol.hpp @@ -365,7 +365,7 @@ enum Verb * * The following optional fields may also be present: * - * NAME - abitrary short user-defined name for this node + * NAME - arbitrary short user-defined name for this node * CONTACT - arbitrary short contact information string for this node * NEIGHBORS - addresses of node(s) to whom we'll relay (mesh-like routing) * LOC_X, LOC_Y, LOC_Z - location relative to the nearest large center of mass @@ -382,6 +382,10 @@ enum Verb * the same information about the responding peer as the originating peer * sent. * + * Note that OK(HELLO) as well as HELLO itself is always sent using the long + * lived identity key, not ephemeral keys. This allows ephemeral re-keying to + * always succeed if one side's ephemeral keys are out of date. + * * OK payload: * <[8] timestamp echoed from original HELLO> * <[1] protocol version>