Browse Source

Update URLs for auto-update, check supernode version in one more place, delete pid before executing updater.

Adam Ierymenko 11 years ago
parent
commit
60731e6d02
3 changed files with 17 additions and 11 deletions
  1. 5 7
      main.cpp
  2. 7 4
      node/Defaults.cpp
  3. 5 0
      node/PacketDecoder.cpp

+ 5 - 7
main.cpp

@@ -487,8 +487,10 @@ int main(int argc,char **argv)
 			case Node::NODE_RESTART_FOR_UPGRADE: {
 #ifdef __UNIX_LIKE__
 				const char *upgPath = node->reasonForTermination();
-				if (upgPath)
-					execl(upgPath,upgPath,"-s",(char *)0); // -s = (re)start after install/upgrade
+				if (upgPath) {
+					Utils::rm((std::string(homeDir)+"/zerotier-one.pid").c_str());
+					execl(upgPath,upgPath,(char *)0);
+				}
 				exitCode = 2;
 				fprintf(stderr,"%s: abnormal termination: unable to execute update at %s\n",argv[0],(upgPath) ? upgPath : "(unknown path)");
 #endif
@@ -506,11 +508,7 @@ int main(int argc,char **argv)
 	} catch ( ... ) {}
 
 #ifdef __UNIX_LIKE__
-	{
-		char pidpath[4096];
-		Utils::snprintf(pidpath,sizeof(pidpath),"%s/zerotier-one.pid",homeDir);
-		Utils::rm(pidpath);
-	}
+	Utils::rm((std::string(homeDir)+"/zerotier-one.pid").c_str());
 #endif
 
 	return exitCode;

+ 7 - 4
node/Defaults.cpp

@@ -126,15 +126,18 @@ static inline const char *_mkUpdateUrl()
 {
 #if defined(__LINUX__) && ( defined(__i386__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__i386) )
 	if (sizeof(void *) == 8)
-		return "http://download.zerotier.com/update/linux/x64/latest.nfo";
-	else return "http://download.zerotier.com/update/linux/x86/latest.nfo";
+		return "http://download.zerotier.com/ZeroTierOneInstaller-linux-x64-LATEST.nfo";
+	else return "http://download.zerotier.com/ZeroTierOneInstaller-linux-x86-LATEST.nfo";
 #define GOT_UPDATE_URL
 #endif
 
 #ifdef __APPLE__
-	// TODO: iOS?
-	return "http://download.zerotier.com/update/mac/combined/latest.nfo";
+#ifdef TARGET_OS_IPHONE
+	// TODO
+#else
+	return "http://download.zerotier.com/ZeroTierOneInstaller-mac-combined-LATEST.nfo";
 #define GOT_UPDATE_URL
+#endif
 #endif
 
 	// TODO: Windows

+ 5 - 0
node/PacketDecoder.cpp

@@ -253,6 +253,11 @@ bool PacketDecoder::_doHELLO(const RuntimeEnvironment *_r)
 		peer->onReceive(_r,_localPort,_remoteAddress,hops(),packetId(),Packet::VERB_HELLO,0,Packet::VERB_NOP,Utils::now());
 		peer->setRemoteVersion(vMajor,vMinor,vRevision);
 
+		// If a supernode has a version higher than ours, this causes a software
+		// update check to run now.
+		if ((_r->updater)&&(_r->topology->isSupernode(peer->address())))
+			_r->updater->sawRemoteVersion(vMajor,vMinor,vRevision);
+
 		Packet outp(source(),_r->identity.address(),Packet::VERB_OK);
 		outp.append((unsigned char)Packet::VERB_HELLO);
 		outp.append(packetId());