diff options
author | Ruben Pollan <meskio@sindominio.net> | 2020-08-04 19:28:43 +0200 |
---|---|---|
committer | Ruben Pollan <meskio@sindominio.net> | 2020-08-13 17:16:09 +0200 |
commit | 7c4a4f5ae0c02f57eb9073fa8f412a38b8f79363 (patch) | |
tree | a261cd36e44917e6a0c5abc3c1dc4f9f0545e4e5 | |
parent | abb65c7fcf570e69480ca70c92d4e271a78ffee2 (diff) |
Quit if there was an initializaton error
Let's close properly without segfaults :)
-rw-r--r-- | gui/qml/main.qml | 6 | ||||
-rw-r--r-- | pkg/backend/api.go | 9 | ||||
-rw-r--r-- | pkg/backend/init.go | 2 | ||||
-rw-r--r-- | pkg/vpn/launcher_linux.go | 3 |
4 files changed, 14 insertions, 6 deletions
diff --git a/gui/qml/main.qml b/gui/qml/main.qml index b4aa19a..09bbab5 100644 --- a/gui/qml/main.qml +++ b/gui/qml/main.qml @@ -20,12 +20,14 @@ ApplicationWindow { donate.visible = true } if (ctx.errors ) { - // TODO consider disabling on/off buttons, or quit after closing the dialog if ( ctx.errors == "nohelpers" ) { showInitFailure(qsTr("Could not find helpers. Check your installation")) } else if ( ctx.errors == "nopolkit" ) { showInitFailure(qsTr("Could not find polkit agent.")) } else { + //: %1 -> application name + //: %2 -> error string + showInitFailure(qsTr("Got an error starting %1: %2").arg(ctx.appName).arg(ctx.errors)) console.debug(ctx.errors) } } @@ -248,5 +250,7 @@ ApplicationWindow { title: qsTr("Initialization Error") text: "" visible: false + onAccepted: backend.quit() + onRejected: backend.quit() } } diff --git a/pkg/backend/api.go b/pkg/backend/api.go index 99e156f..ff8c1bb 100644 --- a/pkg/backend/api.go +++ b/pkg/backend/api.go @@ -4,7 +4,6 @@ package backend import ( "C" - "fmt" "log" "strconv" "unsafe" @@ -31,7 +30,9 @@ func Quit() { } else { ctx.cfg.SetUserStoppedVPN(true) } - ctx.bm.Close() + if ctx.bm != nil { + ctx.bm.Close() + } } func DonateAccepted() { @@ -55,7 +56,9 @@ func InitializeBitmaskContext(opts *InitOpts) { initOnce.Do(func() { initializeContext(opts) }) runDonationReminder() - go ctx.updateStatus() + if ctx.bm != nil { + go ctx.updateStatus() + } } func RefreshContext() *C.char { diff --git a/pkg/backend/init.go b/pkg/backend/init.go index 79efdc7..bae9b9b 100644 --- a/pkg/backend/init.go +++ b/pkg/backend/init.go @@ -45,6 +45,7 @@ func initializeBitmask(errCh chan string, opts *InitOpts) { os.Exit(1) } bitmask.InitializeLogger() + ctx.cfg = config.ParseConfig() b, err := bitmask.InitializeBitmask(opts.SkipLaunch) if err != nil { @@ -70,5 +71,4 @@ func initializeBitmask(errCh chan string, opts *InitOpts) { } ctx.bm = b - ctx.cfg = config.ParseConfig() } diff --git a/pkg/vpn/launcher_linux.go b/pkg/vpn/launcher_linux.go index f92cf6f..1280eae 100644 --- a/pkg/vpn/launcher_linux.go +++ b/pkg/vpn/launcher_linux.go @@ -230,7 +230,8 @@ func bitmaskRootPath() (string, error) { return path, nil } } - return "", errors.New("No bitmask-root found") + log.Println("Can't find bitmask-root") + return "", errors.New("nohelpers") } func getOpenvpnPath() string { |