Browse Source

Prefer IPv6 if all else is equal.

Adam Ierymenko 4 years ago
parent
commit
1ff45020e2
1 changed files with 9 additions and 3 deletions
  1. 9 3
      node/Path.hpp

+ 9 - 3
node/Path.hpp

@@ -311,9 +311,15 @@ public:
 	 */
 	 */
 	inline long quality(const int64_t now) const
 	inline long quality(const int64_t now) const
 	{
 	{
-		const int l = (long)_latency;
-		const int age = (long)std::min((now - _lastIn),(int64_t)(ZT_PATH_HEARTBEAT_PERIOD * 10)); // set an upper sanity limit to avoid overflow
-		return (((age < (ZT_PATH_HEARTBEAT_PERIOD + 5000)) ? l : (l + 0xffff + age)) * (long)((ZT_INETADDRESS_MAX_SCOPE - _ipScope) + 1));
+		const long l = (long)_latency;
+		const long age = (long)std::min((now - _lastIn),(int64_t)(ZT_PATH_HEARTBEAT_PERIOD * 10)); // set an upper sanity limit to avoid overflow
+		return (
+			(
+				(age < (long)(ZT_PATH_HEARTBEAT_PERIOD + 5000)) ? l : (l + 0xffff + age)
+			) * (
+				((long)ZT_INETADDRESS_MAX_SCOPE - (long)_ipScope) + (_addr.isV6() ? (long)1 : (long)3)
+			)
+		);
 	}
 	}
 
 
 	/**
 	/**