Browse Source

Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev

Grant Limberg 7 years ago
parent
commit
f9b07c63db
3 changed files with 24 additions and 36 deletions
  1. 20 33
      node/Dictionary.hpp
  2. 1 0
      node/Switch.cpp
  3. 3 3
      service/OneService.cpp

+ 20 - 33
node/Dictionary.hpp

@@ -62,40 +62,24 @@ template<unsigned int C>
 class Dictionary
 {
 public:
-	Dictionary()
-	{
-		_d[0] = (char)0;
-	}
-
-	Dictionary(const char *s)
-	{
-		if (s) {
-			Utils::scopy(_d,sizeof(_d),s);
-		} else {
-			_d[0] = (char)0;
-		}
-	}
-
+	Dictionary() { memset(_d,0,sizeof(_d)); }
+	Dictionary(const char *s) { this->load(s); }
 	Dictionary(const char *s,unsigned int len)
 	{
-		if (s) {
-			if (len > (C-1))
-				len = C-1;
-			ZT_FAST_MEMCPY(_d,s,len);
-			_d[len] = (char)0;
-		} else {
-			_d[0] = (char)0;
+		for(unsigned int i=0;i<C;++i) {
+			if ((s)&&(i < len)) {
+				if (!(_d[i] = *s))
+					s = (const char *)0;
+				else ++s;
+			} else _d[i] = (char)0;
 		}
+		_d[C - 1] = (char)0;
 	}
-
-	Dictionary(const Dictionary &d)
-	{
-		Utils::scopy(_d,sizeof(_d),d._d);
-	}
+	Dictionary(const Dictionary &d) { memcpy(_d,d._d,C); }
 
 	inline Dictionary &operator=(const Dictionary &d)
 	{
-		Utils::scopy(_d,sizeof(_d),d._d);
+		memcpy(_d,d._d,C);
 		return *this;
 	}
 
@@ -109,12 +93,15 @@ public:
 	 */
 	inline bool load(const char *s)
 	{
-		if (s) {
-			return Utils::scopy(_d,sizeof(_d),s);
-		} else {
-			_d[0] = (char)0;
-			return true;
+		for(unsigned int i=0;i<C;++i) {
+			if (s) {
+				if (!(_d[i] = *s))
+					s = (const char *)0;
+				else ++s;
+			} else _d[i] = (char)0;
 		}
+		_d[C - 1] = (char)0;
+		return (!s);
 	}
 
 	/**
@@ -122,7 +109,7 @@ public:
 	 */
 	inline void clear()
 	{
-		_d[0] = (char)0;
+		memset(_d,0,sizeof(_d));
 	}
 
 	/**

+ 1 - 0
node/Switch.cpp

@@ -50,6 +50,7 @@ namespace ZeroTier {
 Switch::Switch(const RuntimeEnvironment *renv) :
 	RR(renv),
 	_lastBeaconResponse(0),
+	_lastCheckedQueues(0),
 	_lastUniteAttempt(8) // only really used on root servers and upstreams, and it'll grow there just fine
 {
 }

+ 3 - 3
service/OneService.cpp

@@ -1593,7 +1593,7 @@ public:
 
 		if (syncRoutes) {
 			char tapdev[64];
-#ifdef __WINDOWS__
+#if defined(__WINDOWS__) && !defined(ZT_SDK)
 			OSUtils::ztsnprintf(tapdev,sizeof(tapdev),"%.16llx",(unsigned long long)n.tap->luid().Value);
 #else
 			Utils::scopy(tapdev,sizeof(tapdev),n.tap->deviceName().c_str());
@@ -1998,7 +1998,7 @@ public:
 			case ZT_VIRTUAL_NETWORK_CONFIG_OPERATION_CONFIG_UPDATE:
 				ZT_FAST_MEMCPY(&(n.config),nwc,sizeof(ZT_VirtualNetworkConfig));
 				if (n.tap) { // sanity check
-#ifdef __WINDOWS__
+#if defined(__WINDOWS__) && !defined(ZT_SDK)
 					// wait for up to 5 seconds for the WindowsEthernetTap to actually be initialized
 					// 
 					// without WindowsEthernetTap::isInitialized() returning true, the won't actually
@@ -2019,7 +2019,7 @@ public:
 			case ZT_VIRTUAL_NETWORK_CONFIG_OPERATION_DOWN:
 			case ZT_VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY:
 				if (n.tap) { // sanity check
-#ifdef __WINDOWS__
+#if defined(__WINDOWS__) && !defined(ZT_SDK)
 					std::string winInstanceId(n.tap->instanceId());
 #endif
 					*nuptr = (void *)0;