diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-03-14 15:19:16 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-03-14 15:19:16 -0700 |
commit | 0fd45a640bfbbaf1daec96e1601c1a2dc20911d2 (patch) | |
tree | 9a2670d595dbf162990bc505cd6e80c5331a3c78 /service | |
parent | 0b0d03dbe2420d8d64f517d69c20f94891aa0bb3 (diff) | |
download | infinitytier-0fd45a640bfbbaf1daec96e1601c1a2dc20911d2.tar.gz infinitytier-0fd45a640bfbbaf1daec96e1601c1a2dc20911d2.zip |
Allow multiple architectures in software update dist .json file arch fields.
Diffstat (limited to 'service')
-rw-r--r-- | service/SoftwareUpdater.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/service/SoftwareUpdater.cpp b/service/SoftwareUpdater.cpp index fa7216ce..40f49244 100644 --- a/service/SoftwareUpdater.cpp +++ b/service/SoftwareUpdater.cpp @@ -143,8 +143,18 @@ void SoftwareUpdater::handleSoftwareUpdateUserMessage(uint64_t origin,const void unsigned int bestVRev = rvRev; unsigned int bestVBld = rvBld; for(std::map< Array<uint8_t,16>,_D >::const_iterator d(_dist.begin());d!=_dist.end();++d) { + // The arch field in update description .json files can be an array for e.g. multi-arch update files + const nlohmann::json &dvArch2 = d->second.meta[ZT_SOFTWARE_UPDATE_JSON_ARCHITECTURE]; + std::vector<unsigned int> dvArch; + if (dvArch2.is_array()) { + for(unsigned long i=0;i<dvArch2.size();++i) + dvArch.push_back(OSUtils::jsonInt(dvArch2[i],0)); + } else { + dvArch.push_back(OSUtils::jsonInt(dvArch2,0)); + } + if ((OSUtils::jsonInt(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_PLATFORM],0) == rvPlatform)&& - (OSUtils::jsonInt(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_ARCHITECTURE],0) == rvArch)&& + (std::find(dvArch.begin(),dvArch.end(),rvArch) != dvArch.end())&& (OSUtils::jsonInt(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_VENDOR],0) == rvVendor)&& (OSUtils::jsonString(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_CHANNEL],"") == rvChannel)&& (OSUtils::jsonString(d->second.meta[ZT_SOFTWARE_UPDATE_JSON_UPDATE_SIGNED_BY],"") == expectedSigner)) { |