aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client.go27
-rw-r--r--comp_auth.go2
-rw-r--r--comp_pkts.go2
-rw-r--r--map.go2
-rw-r--r--path.go2
5 files changed, 18 insertions, 17 deletions
diff --git a/client.go b/client.go
index 889da38..b177a07 100644
--- a/client.go
+++ b/client.go
@@ -2,8 +2,8 @@ package main
import (
"errors"
- "github.com/dragonfireclient/mt"
"github.com/dragonfireclient/hydra-dragonfire/convert"
+ "github.com/dragonfireclient/mt"
"github.com/yuin/gopher-lua"
"net"
"sync"
@@ -25,12 +25,13 @@ type Component interface {
}
type Client struct {
- mu sync.Mutex
address string
state clientState
conn mt.Peer
+ muConn sync.Mutex
queue chan Event
components map[string]Component
+ muComp sync.Mutex
table *lua.LTable
userdata *lua.LUserData
}
@@ -80,8 +81,8 @@ func getClients(l *lua.LState) []*Client {
}
func (client *Client) closeConn() {
- client.mu.Lock()
- defer client.mu.Unlock()
+ client.muConn.Lock()
+ defer client.muConn.Unlock()
if client.state == csConnected {
client.conn.Close()
@@ -165,11 +166,11 @@ func l_client_connect(l *lua.LState) int {
pkt, err := client.conn.Recv()
if err == nil {
- client.mu.Lock()
+ client.muComp.Lock()
for _, comp := range client.components {
comp.process(&pkt)
}
- client.mu.Unlock()
+ client.muComp.Unlock()
} else if errors.Is(err, net.ErrClosed) {
client.queue <- EventDisconnect{client: client}
return
@@ -179,11 +180,11 @@ func l_client_connect(l *lua.LState) int {
}
}()
- client.mu.Lock()
+ client.muComp.Lock()
for _, comp := range client.components {
comp.connect()
}
- client.mu.Unlock()
+ client.muComp.Unlock()
return 0
}
@@ -203,8 +204,8 @@ func l_client_enable(l *lua.LState) int {
client := getClient(l)
n := l.GetTop()
- client.mu.Lock()
- defer client.mu.Unlock()
+ client.muComp.Lock()
+ defer client.muComp.Unlock()
for i := 2; i <= n; i++ {
name := l.CheckString(i)
@@ -232,6 +233,9 @@ func l_client_enable(l *lua.LState) int {
func l_client_send(l *lua.LState) int {
client := getClient(l)
+ client.muConn.Lock()
+ defer client.muConn.Unlock()
+
if client.state != csConnected {
panic("not connected")
}
@@ -239,9 +243,6 @@ func l_client_send(l *lua.LState) int {
cmd := convert.ReadCmd(l)
doAck := l.ToBool(4)
- client.mu.Lock()
- defer client.mu.Unlock()
-
if client.state == csConnected {
ack, err := client.conn.SendCmd(cmd)
if err != nil && !errors.Is(err, net.ErrClosed) {
diff --git a/comp_auth.go b/comp_auth.go
index a017cc7..eeccc66 100644
--- a/comp_auth.go
+++ b/comp_auth.go
@@ -2,8 +2,8 @@ package main
import (
"github.com/HimbeerserverDE/srp"
- "github.com/dragonfireclient/mt"
"github.com/dragonfireclient/hydra-dragonfire/convert"
+ "github.com/dragonfireclient/mt"
"github.com/yuin/gopher-lua"
"strings"
"time"
diff --git a/comp_pkts.go b/comp_pkts.go
index f135e6b..7fc7e83 100644
--- a/comp_pkts.go
+++ b/comp_pkts.go
@@ -1,8 +1,8 @@
package main
import (
- "github.com/dragonfireclient/mt"
"github.com/dragonfireclient/hydra-dragonfire/convert"
+ "github.com/dragonfireclient/mt"
"github.com/yuin/gopher-lua"
"sync"
)
diff --git a/map.go b/map.go
index ad3cebf..32dd7c3 100644
--- a/map.go
+++ b/map.go
@@ -1,8 +1,8 @@
package main
import (
- "github.com/dragonfireclient/mt"
"github.com/dragonfireclient/hydra-dragonfire/convert"
+ "github.com/dragonfireclient/mt"
"github.com/yuin/gopher-lua"
"sync"
)
diff --git a/path.go b/path.go
index bcdd910..332a325 100644
--- a/path.go
+++ b/path.go
@@ -1,9 +1,9 @@
package main
import (
- "github.com/dragonfireclient/mt"
"github.com/beefsack/go-astar"
"github.com/dragonfireclient/hydra-dragonfire/convert"
+ "github.com/dragonfireclient/mt"
"github.com/yuin/gopher-lua"
"math"
"sync"