aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2021-09-04 12:35:42 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2021-09-04 12:35:42 +0200
commit233c43eea7e9907cdb5172c07f97fe007d26992d (patch)
tree7b09183dcc7f217d79800689d61149ae05a3a770
parentd041392641d91e6ce9c69415e14f3c0261621791 (diff)
Fix race condition when switching servers or disconnecting
-rw-r--r--client_conn.go3
-rw-r--r--content.go3
2 files changed, 3 insertions, 3 deletions
diff --git a/client_conn.go b/client_conn.go
index 0524b41..62864aa 100644
--- a/client_conn.go
+++ b/client_conn.go
@@ -115,8 +115,11 @@ func handleClt(cc *clientConn) {
if cc.server() != nil {
cc.server().Close()
+
+ cc.mu.Lock()
cc.server().clt = nil
cc.srv = nil
+ cc.mu.Unlock()
}
if cc.name != "" {
diff --git a/content.go b/content.go
index f00bc33..c16c925 100644
--- a/content.go
+++ b/content.go
@@ -299,7 +299,6 @@ func muxItemDefs(conns []*contentConn) ([]mt.ItemDef, []struct{ Alias, Orig stri
for _, cc := range conns {
<-cc.done()
-
for _, def := range cc.itemDefs {
if def.Name == "" {
def.Name = "hand"
@@ -358,7 +357,6 @@ func muxNodeDefs(conns []*contentConn) (nodeDefs []mt.NodeDef, p0Map param0Map,
for _, cc := range conns {
<-cc.done()
-
for _, def := range cc.nodeDefs {
if p0Map[cc.name] == nil {
p0Map[cc.name] = map[mt.Content]mt.Content{
@@ -414,7 +412,6 @@ func muxMedia(conns []*contentConn) []mediaFile {
for _, cc := range conns {
<-cc.done()
-
for _, f := range cc.media {
prepend(cc.name, &f.name)
media = append(media, f)