Adam Ierymenko 5 years ago
parent
commit
674edab814
2 changed files with 7 additions and 2 deletions
  1. 2 1
      node/Address.hpp
  2. 5 1
      node/Protocol.hpp

+ 2 - 1
node/Address.hpp

@@ -31,9 +31,10 @@ class Address : public TriviallyCopyable
 {
 {
 public:
 public:
 	ZT_INLINE Address() noexcept : _a(0) {}
 	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]) {}
 	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; }
 	ZT_INLINE Address &operator=(const uint64_t a) noexcept { _a = a; return *this; }
 
 
 	/**
 	/**

+ 5 - 1
node/Protocol.hpp

@@ -365,7 +365,7 @@ enum Verb
 	 *
 	 *
 	 * The following optional fields may also be present:
 	 * 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
 	 *   CONTACT - arbitrary short contact information string for this node
 	 *   NEIGHBORS - addresses of node(s) to whom we'll relay (mesh-like routing)
 	 *   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
 	 *   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
 	 * the same information about the responding peer as the originating peer
 	 * sent.
 	 * 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:
 	 * OK payload:
 	 *   <[8] timestamp echoed from original HELLO>
 	 *   <[8] timestamp echoed from original HELLO>
 	 *   <[1] protocol version>
 	 *   <[1] protocol version>