Skip to content
Snippets Groups Projects
Unverified Commit 5b6bb5ce authored by meskio's avatar meskio :tent: Committed by Kali Kaneko
Browse files

[bug] accept corrupted pid files

A corrupted pid file, or a file that contains something else than a pid
number used to block bitmask-vpn from launch. Now if the file contains
something that is not expected it will log it and rewrite it.

I refactor de code so the pid file will be released on quit instead of
initialization.

- Resolves: #349
parent 0a45a565
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,7 @@ import (
"0xacab.org/leap/bitmask-vpn/pkg/bitmask"
"0xacab.org/leap/bitmask-vpn/pkg/config/version"
"0xacab.org/leap/bitmask-vpn/pkg/pid"
"0xacab.org/leap/bitmask-vpn/pkg/pickle"
)
......@@ -56,6 +57,7 @@ func Quit() {
if ctx.bm != nil {
ctx.bm.Close()
}
pid.ReleasePID()
}
func DonateAccepted() {
......
......@@ -7,6 +7,7 @@ import (
"0xacab.org/leap/bitmask-vpn/pkg/bitmask"
"0xacab.org/leap/bitmask-vpn/pkg/config"
"0xacab.org/leap/bitmask-vpn/pkg/config/version"
"0xacab.org/leap/bitmask-vpn/pkg/pid"
)
// initializeContext initializes an empty connStatus and assigns it to the
......@@ -52,6 +53,13 @@ func initializeBitmask(errCh chan string, opts *InitOpts) {
bitmask.InitializeLogger()
ctx.cfg = config.ParseConfig()
err := pid.AcquirePID()
if err != nil {
log.Println("Error acquiring PID:", err)
errCh <- err.Error()
return
}
b, err := bitmask.InitializeBitmask(opts.SkipLaunch)
if err != nil {
log.Println("error: cannot initialize bitmask")
......
......@@ -26,7 +26,6 @@ import (
"golang.org/x/text/message"
"0xacab.org/leap/bitmask-vpn/pkg/config"
"0xacab.org/leap/bitmask-vpn/pkg/pid"
"0xacab.org/leap/bitmask-vpn/pkg/vpn"
)
......@@ -107,13 +106,6 @@ func InitializeBitmask(skipLaunch bool) (Bitmask, error) {
os.MkdirAll(config.Path, os.ModePerm)
}
err := pid.AcquirePID()
if err != nil {
log.Println("Error acquiring PID:", err)
return nil, err
}
defer pid.ReleasePID()
conf := config.ParseConfig()
conf.Printer = initPrinter()
......
......@@ -35,7 +35,7 @@ func AcquirePID() error {
pid := syscall.Getpid()
current, err := getPID()
if err != nil {
return err
log.Print("Error reading pid file:", err)
}
if current != pid && pidRunning(current) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment