From 53cf8796c753029e88749a698eb7d6df9b695254 Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 15 May 2022 11:59:51 +0200
Subject: [PATCH] gluon-autoupdater: revert to default branch when configured
 branch is invalid

An invalid branch may be set for various reasons:

- Previous firmware had an invalid default branch
- Branch list has changed and old UCI branch config was removed by a
  site-specific upgrade script
- Manual UCI configuration
---
 .../luasrc/lib/gluon/upgrade/500-autoupdater   | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/package/gluon-autoupdater/luasrc/lib/gluon/upgrade/500-autoupdater b/package/gluon-autoupdater/luasrc/lib/gluon/upgrade/500-autoupdater
index 10f6197f7..351c8e04e 100755
--- a/package/gluon-autoupdater/luasrc/lib/gluon/upgrade/500-autoupdater
+++ b/package/gluon-autoupdater/luasrc/lib/gluon/upgrade/500-autoupdater
@@ -32,20 +32,24 @@ local function default_branch()
 	return site.autoupdater.branch(min_branch)
 end
 
+local enabled, branch
 if not uci:get('autoupdater', 'settings') then
-	local enabled = unistd.access('/lib/gluon/autoupdater/default_enabled') ~= nil
+	enabled = unistd.access('/lib/gluon/autoupdater/default_enabled') ~= nil
+end
 
-	local branch = default_branch()
+local old_branch = uci:get('autoupdater', 'settings', 'branch')
+if not old_branch or not uci:get('autoupdater', old_branch) then
+	branch = default_branch()
 	if not branch then
 		enabled = false
 	end
-
-	uci:section('autoupdater', 'autoupdater', 'settings', {
-		enabled = enabled,
-		branch = branch,
-	})
 end
 
+uci:section('autoupdater', 'autoupdater', 'settings', {
+	enabled = enabled,
+	branch = branch,
+})
+
 uci:set('autoupdater', 'settings', 'version_file', '/lib/gluon/release')
 
 uci:save('autoupdater')
-- 
GitLab