diff --git a/src/cloudron.js b/src/cloudron.js index 78e974d3f..17c790a2c 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -515,10 +515,10 @@ function update(boxUpdateInfo, callback) { // initiate the update/upgrade but do not wait for it if (config.version().match(/[-+]/) !== null && config.version().replace(/[-+].*/, '') === boxUpdateInfo.version) { - debug('Starting short-circuit from prerelease version %s to release version %s', config.version(), boxUpdateInfo.version); - config.setVersion(boxUpdateInfo.version); - progress.clear(progress.UPDATE); - locker.unlock(locker.OP_BOX_UPDATE); + doShortCircuitUpdate(boxUpdateInfo, function (error) { + if (error) debug('Short-circuit update failed', error); + locker.unlock(locker.OP_BOX_UPDATE); + }); } else if (boxUpdateInfo.upgrade) { debug('Starting upgrade'); doUpgrade(boxUpdateInfo, function (error) { @@ -550,6 +550,16 @@ function updateToLatest(callback) { update(boxUpdateInfo, callback); } +function doShortCircuitUpdate(boxUpdateInfo, callback) { + assert(boxUpdateInfo !== null && typeof boxUpdateInfo === 'object'); + + debug('Starting short-circuit from prerelease version %s to release version %s', config.version(), boxUpdateInfo.version); + config.setVersion(boxUpdateInfo.version); + progress.clear(progress.UPDATE); + updatechecker.resetUpdateInfo(); + callback(); +} + function doUpgrade(boxUpdateInfo, callback) { assert(boxUpdateInfo !== null && typeof boxUpdateInfo === 'object'); diff --git a/src/updatechecker.js b/src/updatechecker.js index 24a9df66d..976e4f544 100644 --- a/src/updatechecker.js +++ b/src/updatechecker.js @@ -6,7 +6,8 @@ exports = module.exports = { checkAppUpdates: checkAppUpdates, checkBoxUpdates: checkBoxUpdates, - getUpdateInfo: getUpdateInfo + getUpdateInfo: getUpdateInfo, + resetUpdateInfo: resetUpdateInfo }; var apps = require('./apps.js'), @@ -42,6 +43,11 @@ function getUpdateInfo() { }; } +function resetUpdateInfo() { + gAppUpdateInfo = { }; + gBoxUpdateInfo = null; +} + function getAppUpdates(callback) { apps.getAll(function (error, apps) { if (error) return callback(error);