From 457a238082b2ded0ab05d2c86b1fa8ffa0a7469c Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 30 Jan 2022 20:53:32 +0100 Subject: [PATCH] ensure that messages are received through ack --- modules/structs/MinecraftClient.go | 5 +++++ serverCommunication/minecraft.go | 2 +- serverCommunication/web.go | 8 -------- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/modules/structs/MinecraftClient.go b/modules/structs/MinecraftClient.go index 1450835..dd4005a 100644 --- a/modules/structs/MinecraftClient.go +++ b/modules/structs/MinecraftClient.go @@ -2,6 +2,7 @@ package structs import ( "sync" + "time" "github.com/gofiber/websocket/v2" "krakatoa.net/backend/modules/logger" @@ -49,6 +50,10 @@ func (mcClient *MinecraftClient) GenerateMinecraftCmdID() int { return mcClient.CurrentCmdIDIndexByBackend } +func (mcClient *MinecraftClient) AddMessageToSendQueue(raw []byte, cmdID int) { + mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()}) +} + func (mcClient *MinecraftClient) RemoveSendMessageFromQueueByCmdID(cmdID int) { mcClient.sendQueueMessagesMu.Lock() defer mcClient.sendQueueMessagesMu.Unlock() diff --git a/serverCommunication/minecraft.go b/serverCommunication/minecraft.go index 5a31d8f..85f14c3 100644 --- a/serverCommunication/minecraft.go +++ b/serverCommunication/minecraft.go @@ -229,7 +229,7 @@ func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNu } if status == kraProtocol.StatusGet { - mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()}) + mcClient.AddMessageToSendQueue(raw, cmdID) } return nil diff --git a/serverCommunication/web.go b/serverCommunication/web.go index 8a01201..862b76b 100644 --- a/serverCommunication/web.go +++ b/serverCommunication/web.go @@ -129,14 +129,6 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, msg []byt raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args) webClient.SendBinaryMessage(conn, raw) - - if status == kraProtocol.StatusGet { - if isVoice { - webClient.SendVoiceQueueMessages = append(webClient.SendVoiceQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()}) - } else { - webClient.SendMobileQueueMessages = append(webClient.SendMobileQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()}) - } - } } return } else { // web