aboutsummaryrefslogtreecommitdiff
path: root/hop.go
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2021-09-04 17:25:53 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2021-09-04 17:25:53 +0200
commit1dcf73366ee138312ab75fb07bc5b273130f3bb1 (patch)
tree6e1c00fb0db1f471b897748c273e552e391a04cd /hop.go
parent90c422d72dd9dac7b449d2585b80f57e6184388a (diff)
Fix server hopping
Diffstat (limited to 'hop.go')
-rw-r--r--hop.go15
1 files changed, 10 insertions, 5 deletions
diff --git a/hop.go b/hop.go
index ae856ef..fb87d15 100644
--- a/hop.go
+++ b/hop.go
@@ -11,8 +11,10 @@ func (cc *clientConn) hop(serverName string) error {
cc.hopMu.Lock()
defer cc.hopMu.Unlock()
+ cc.log("<->", "hop", serverName)
+
if cc.server() == nil {
- err := fmt.Errorf("hop: no server connection")
+ err := fmt.Errorf("no server connection")
cc.log("<->", err)
return err
}
@@ -26,14 +28,14 @@ func (cc *clientConn) hop(serverName string) error {
}
if strAddr == "" {
- return fmt.Errorf("hop: inexistent server")
+ return fmt.Errorf("inexistent server")
}
// This needs to be done before the serverConn is closed
// so the clientConn isn't closed by the packet handler
- cc.mu.Lock()
+ cc.server().mu.Lock()
cc.server().clt = nil
- cc.mu.Unlock()
+ cc.server().mu.Unlock()
cc.server().Close()
@@ -72,7 +74,8 @@ func (cc *clientConn) hop(serverName string) error {
cc.SendCmd(&mt.ToCltHP{})
cc.SendCmd(&mt.ToCltHUDFlags{Mask: ^mt.HUDFlags(0)})
cc.SendCmd(&mt.ToCltLocalPlayerAnim{})
- cc.SendCmd(&mt.ToCltMinimapModes{})
+ // An issue in the mt package breaks this
+ // cc.SendCmd(&mt.ToCltMinimapModes{})
cc.SendCmd(&mt.ToCltMoonParams{})
cc.SendCmd(&mt.ToCltMovement{})
cc.SendCmd(&mt.ToCltOverrideDayNightRatio{})
@@ -96,7 +99,9 @@ func (cc *clientConn) hop(serverName string) error {
Players: players,
})
+ cc.mu.Lock()
cc.srv = nil
+ cc.mu.Unlock()
addr, err := net.ResolveUDPAddr("udp", strAddr)
if err != nil {