From d24eb3bb8d008dd5eca15cc6565f0e3821129bdc Mon Sep 17 00:00:00 2001
From: kali <kali@nowhere>
Date: Fri, 14 Apr 2023 19:50:29 +0200
Subject: [PATCH] lock start/stop

---
 client/client.go | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/client/client.go b/client/client.go
index 81bb058..8cb71d8 100644
--- a/client/client.go
+++ b/client/client.go
@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"log"
 	"net"
+	"sync"
 
 	"0xacab.org/leap/obfsvpn/obfsvpn"
 	"github.com/kalikaneko/socks5"
@@ -25,6 +26,7 @@ type Client struct {
 	obfs4Cert   string
 	server      *socks5.Server
 	EventLogger EventLogger
+	mux         sync.Mutex
 }
 
 type EventLogger interface {
@@ -41,7 +43,10 @@ func NewClient(kcp bool, socksAddr, obfs4Cert string) *Client {
 }
 
 func (c *Client) Start() (bool, error) {
+	c.mux.Lock()
+
 	defer func() {
+		c.mux.Unlock()
 		c.log("STOPPED", "")
 	}()
 
@@ -84,6 +89,9 @@ func (c *Client) Stop() (bool, error) {
 		return false, ErrNotRunning
 	}
 
+	c.mux.Lock()
+	defer c.mux.Unlock()
+
 	if err := c.server.Close(); err != nil {
 		c.error("error while stopping: %v\n", err)
 		return false, err
@@ -118,5 +126,7 @@ func (c *Client) error(format string, a ...interface{}) {
 }
 
 func (c *Client) IsStarted() bool {
+	c.mux.Lock()
+	defer c.mux.Unlock()
 	return c.server != nil
 }
-- 
GitLab