summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Pollan <meskio@sindominio.net>2020-08-04 19:28:43 +0200
committerRuben Pollan <meskio@sindominio.net>2020-08-13 17:16:09 +0200
commit7c4a4f5ae0c02f57eb9073fa8f412a38b8f79363 (patch)
treea261cd36e44917e6a0c5abc3c1dc4f9f0545e4e5
parentabb65c7fcf570e69480ca70c92d4e271a78ffee2 (diff)
Quit if there was an initializaton error
Let's close properly without segfaults :)
-rw-r--r--gui/qml/main.qml6
-rw-r--r--pkg/backend/api.go9
-rw-r--r--pkg/backend/init.go2
-rw-r--r--pkg/vpn/launcher_linux.go3
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 {