summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gui/qml/FailDialog.qml6
-rw-r--r--pkg/backend/actions.go6
-rw-r--r--pkg/backend/api.go6
-rw-r--r--pkg/backend/init.go11
-rw-r--r--pkg/bitmask/init.go4
-rw-r--r--pkg/vpn/openvpn.go3
6 files changed, 24 insertions, 12 deletions
diff --git a/gui/qml/FailDialog.qml b/gui/qml/FailDialog.qml
index a78690e..d151feb 100644
--- a/gui/qml/FailDialog.qml
+++ b/gui/qml/FailDialog.qml
@@ -16,7 +16,11 @@ MessageDialog {
if (ctx.loginDialog == 'true') {
login.visible = true
} else {
- backend.quit()
+ // FIXME - we probably want to distinguish
+ // fatal from recoverable errors. For the time being
+ // we can avoid quitting so that people can try reconnects if it's
+ // a network problem, it's confusing to quit the app.
+ // backend.quit()
}
}
}
diff --git a/pkg/backend/actions.go b/pkg/backend/actions.go
index 725a550..e45b026 100644
--- a/pkg/backend/actions.go
+++ b/pkg/backend/actions.go
@@ -2,14 +2,14 @@ package backend
import (
"log"
- "os"
)
func startVPN() {
+ setError("")
err := ctx.bm.StartVPN(ctx.Provider)
if err != nil {
- log.Println(err)
- os.Exit(1)
+ log.Println("ERROR: ", err)
+ setError(err.Error())
}
}
diff --git a/pkg/backend/api.go b/pkg/backend/api.go
index a799b0e..293dd9e 100644
--- a/pkg/backend/api.go
+++ b/pkg/backend/api.go
@@ -38,6 +38,12 @@ func Login(username, password string) {
go ctx.updateStatus()
}
+func setError(err string) {
+ ctx.Errors = err
+ go setStatus(off)
+ go ctx.updateStatus()
+}
+
func SwitchOn() {
go setStatus(starting)
go startVPN()
diff --git a/pkg/backend/init.go b/pkg/backend/init.go
index f76ab49..7d7a534 100644
--- a/pkg/backend/init.go
+++ b/pkg/backend/init.go
@@ -47,7 +47,7 @@ func checkErrors(errCh chan string) {
func initializeBitmask(errCh chan string, opts *InitOpts) {
if ctx == nil {
- log.Println("bug: cannot initialize bitmask, ctx is nil!")
+ log.Println("BUG: cannot initialize bitmask, ctx is nil!")
os.Exit(1)
}
bitmask.InitializeLogger()
@@ -63,7 +63,7 @@ func initializeBitmask(errCh chan string, opts *InitOpts) {
b, err := bitmask.InitializeBitmask(ctx.cfg)
if err != nil {
- log.Println("error: cannot initialize bitmask")
+ log.Println("ERROR: cannot initialize bitmask")
errCh <- err.Error()
return
}
@@ -72,19 +72,18 @@ func initializeBitmask(errCh chan string, opts *InitOpts) {
helpers, privilege, err := b.VPNCheck()
if err != nil {
- log.Println("error doing vpn check")
+ log.Println("ERROR: vpn check")
errCh <- err.Error()
}
if helpers == false {
- log.Println("no helpers")
+ log.Println("ERROR: no helpers")
errCh <- "nohelpers"
}
if privilege == false {
- log.Println("no polkit")
+ log.Println("ERROR: no polkit")
errCh <- "nopolkit"
}
-
ctx.bm = b
}
diff --git a/pkg/bitmask/init.go b/pkg/bitmask/init.go
index 02ee544..b6b41b4 100644
--- a/pkg/bitmask/init.go
+++ b/pkg/bitmask/init.go
@@ -97,8 +97,10 @@ func InitializeBitmask(conf *config.Config) (Bitmask, error) {
if !conf.SkipLaunch {
err := maybeStartVPN(b, conf)
if err != nil {
+ // we don't want this error to avoid initialization of
+ // the bitmask object. If we cannot autostart it's not
+ // so terrible.
log.Println("Error starting VPN: ", err)
- return nil, err
}
}
return b, nil
diff --git a/pkg/vpn/openvpn.go b/pkg/vpn/openvpn.go
index c0ec2e1..d5f9dc2 100644
--- a/pkg/vpn/openvpn.go
+++ b/pkg/vpn/openvpn.go
@@ -47,7 +47,8 @@ func (b *Bitmask) StartVPN(provider string) error {
if !b.CanStartVPN() {
return errors.New("BUG: cannot start vpn")
}
- return b.startOpenVPN(proxy)
+ err := b.startOpenVPN(proxy)
+ return err
}
func (b *Bitmask) CanStartVPN() bool {