summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-03-14 15:19:16 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-03-14 15:19:16 -0700
commit0fd45a640bfbbaf1daec96e1601c1a2dc20911d2 (patch)
tree9a2670d595dbf162990bc505cd6e80c5331a3c78 /service
parent0b0d03dbe2420d8d64f517d69c20f94891aa0bb3 (diff)
downloadinfinitytier-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.cpp12
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)) {