summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-07-06 17:32:41 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-07-06 17:32:41 -0700
commitf23a43fb81850837c1d85091abf91cc57ae35ef9 (patch)
tree014ed936aa07d67fde0186d9ea476fbe1c9d8ffd /service
parent88997a03145c36845df6939d56e518343a12e630 (diff)
downloadinfinitytier-f23a43fb81850837c1d85091abf91cc57ae35ef9.tar.gz
infinitytier-f23a43fb81850837c1d85091abf91cc57ae35ef9.zip
More cleanup.
Diffstat (limited to 'service')
-rw-r--r--service/SoftwareUpdater.cpp33
1 files changed, 31 insertions, 2 deletions
diff --git a/service/SoftwareUpdater.cpp b/service/SoftwareUpdater.cpp
index b4bf03ec..57ecce78 100644
--- a/service/SoftwareUpdater.cpp
+++ b/service/SoftwareUpdater.cpp
@@ -57,6 +57,35 @@
namespace ZeroTier {
+static int _compareVersion(unsigned int maj1,unsigned int min1,unsigned int rev1,unsigned int b1,unsigned int maj2,unsigned int min2,unsigned int rev2,unsigned int b2)
+{
+ if (maj1 > maj2) {
+ return 1;
+ } else if (maj1 < maj2) {
+ return -1;
+ } else {
+ if (min1 > min2) {
+ return 1;
+ } else if (min1 < min2) {
+ return -1;
+ } else {
+ if (rev1 > rev2) {
+ return 1;
+ } else if (rev1 < rev2) {
+ return -1;
+ } else {
+ if (b1 > b2) {
+ return 1;
+ } else if (b1 < b2) {
+ return -1;
+ } else {
+ return 0;
+ }
+ }
+ }
+ }
+}
+
SoftwareUpdater::SoftwareUpdater(Node &node,const std::string &homePath) :
_node(node),
_lastCheckTime(0),
@@ -170,7 +199,7 @@ void SoftwareUpdater::handleSoftwareUpdateUserMessage(uint64_t origin,const void
const unsigned int dvMin = (unsigned int)OSUtils::jsonInt(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_VERSION_MINOR],0);
const unsigned int dvRev = (unsigned int)OSUtils::jsonInt(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_VERSION_REVISION],0);
const unsigned int dvBld = (unsigned int)OSUtils::jsonInt(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_VERSION_BUILD],0);
- if (Utils::compareVersion(dvMaj,dvMin,dvRev,dvBld,bestVMaj,bestVMin,bestVRev,bestVBld) > 0) {
+ if (_compareVersion(dvMaj,dvMin,dvRev,dvBld,bestVMaj,bestVMin,bestVRev,bestVBld) > 0) {
latest = &(d->second.meta);
bestVMaj = dvMaj;
bestVMin = dvMin;
@@ -194,7 +223,7 @@ void SoftwareUpdater::handleSoftwareUpdateUserMessage(uint64_t origin,const void
} else { // VERB_LATEST
if ((origin == ZT_SOFTWARE_UPDATE_SERVICE)&&
- (Utils::compareVersion(rvMaj,rvMin,rvRev,rvBld,ZEROTIER_ONE_VERSION_MAJOR,ZEROTIER_ONE_VERSION_MINOR,ZEROTIER_ONE_VERSION_REVISION,ZEROTIER_ONE_VERSION_BUILD) > 0)&&
+ (_compareVersion(rvMaj,rvMin,rvRev,rvBld,ZEROTIER_ONE_VERSION_MAJOR,ZEROTIER_ONE_VERSION_MINOR,ZEROTIER_ONE_VERSION_REVISION,ZEROTIER_ONE_VERSION_BUILD) > 0)&&
(OSUtils::jsonString(req[ZT_SOFTWARE_UPDATE_JSON_UPDATE_SIGNED_BY],"") == ZT_SOFTWARE_UPDATE_SIGNING_AUTHORITY)) {
const unsigned long len = (unsigned long)OSUtils::jsonInt(req[ZT_SOFTWARE_UPDATE_JSON_UPDATE_SIZE],0);
const std::string hash = OSUtils::jsonBinFromHex(req[ZT_SOFTWARE_UPDATE_JSON_UPDATE_HASH]);