diff --git a/qr2/main.go b/qr2/main.go index 9a26696..68c82a4 100644 --- a/qr2/main.go +++ b/qr2/main.go @@ -127,9 +127,6 @@ func handleConnection(conn net.PacketConn, addr net.Addr, buffer []byte) { login.NeedsExploit = false } - mutex.Lock() - defer mutex.Unlock() - session.MessageAckWaker.Assert() return diff --git a/qr2/message.go b/qr2/message.go index 68f3fc7..2518b50 100644 --- a/qr2/message.go +++ b/qr2/message.go @@ -235,17 +235,17 @@ func SendClientMessage(senderIP string, destSearchID uint64, message []byte) { payload = append(payload, message...) receiver.MessageMutex.Lock() + defer receiver.MessageMutex.Unlock() + if receiver.Login == nil { - receiver.MessageMutex.Unlock() return } s := sleep.Sleeper{} + defer s.Done() - mutex.Lock() receiver.MessageAckWaker.Clear() s.AddWaker(receiver.MessageAckWaker) - mutex.Unlock() timeWaker := sleep.Waker{} s.AddWaker(&timeWaker) @@ -275,12 +275,9 @@ func SendClientMessage(senderIP string, destSearchID uint64, message []byte) { login.GPErrorCallback(login.ProfileID, "network_error") receiver.Login = nil } - - receiver.MessageMutex.Unlock() return default: - receiver.MessageMutex.Unlock() return } }