From 216bd0a9580417e846aa357e3bc2a6dcfd5b1409 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Mon, 19 Jun 2017 18:39:27 +0200 Subject: Fix toolkit update logic to prevent update loops. Only consider equal appversion to be "update available" if BuildID is present AND greater than current. This resolves #13. --- toolkit/mozapps/update/nsUpdateService.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/toolkit/mozapps/update/nsUpdateService.js b/toolkit/mozapps/update/nsUpdateService.js index 10eb1d100..e23ab3f40 100644 --- a/toolkit/mozapps/update/nsUpdateService.js +++ b/toolkit/mozapps/update/nsUpdateService.js @@ -2395,14 +2395,16 @@ UpdateService.prototype = { let lastCheckCode = AUSTLMY.CHK_NO_COMPAT_UPDATE_FOUND; updates.forEach(function(aUpdate) { - // Ignore updates for older versions of the application and updates for - // the same version of the application with the same build ID. + // Ignore updates for older versions of the applications and updates for + // the same version or build id of the application if (vc.compare(aUpdate.appVersion, Services.appinfo.version) < 0 || - vc.compare(aUpdate.appVersion, Services.appinfo.version) == 0 && - aUpdate.buildID == Services.appinfo.appBuildID) { + (vc.compare(aUpdate.appVersion, Services.appinfo.version) == 0 && + aUpdate.buildID <= Services.appinfo.appBuildID) || + (vc.compare(aUpdate.appVersion, Services.appinfo.version) == 0 && + aUpdate.buildID == undefined)) { LOG("UpdateService:selectUpdate - skipping update because the " + - "update's application version is less than the current " + - "application version"); + "update's application version is less than or equal to " + + "the current application version."); lastCheckCode = AUSTLMY.CHK_UPDATE_PREVIOUS_VERSION; return; } -- cgit v1.2.3