From 60731e6d02c4ebeb0700bc1c6a53261159049e01 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 7 Jan 2014 16:37:36 -0800 Subject: [PATCH] Update URLs for auto-update, check supernode version in one more place, delete pid before executing updater. --- main.cpp | 12 +++++------- node/Defaults.cpp | 11 +++++++---- node/PacketDecoder.cpp | 5 +++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/main.cpp b/main.cpp index dfb00fc5b..88c8787e9 100644 --- a/main.cpp +++ b/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; diff --git a/node/Defaults.cpp b/node/Defaults.cpp index 2588c85f6..41ff540bf 100644 --- a/node/Defaults.cpp +++ b/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 diff --git a/node/PacketDecoder.cpp b/node/PacketDecoder.cpp index cf1b5ff5a..b8bdc8de5 100644 --- a/node/PacketDecoder.cpp +++ b/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());