From f2862ea4b8acb7392c229ea4918b1ee0268e5216 Mon Sep 17 00:00:00 2001 From: wish Date: Sat, 8 Mar 2025 11:41:57 +1100 Subject: [PATCH] prevent concurrent map write to questCache --- server/channelserver/handlers_quest.go | 2 ++ server/channelserver/sys_channel_server.go | 1 + 2 files changed, 3 insertions(+) diff --git a/server/channelserver/handlers_quest.go b/server/channelserver/handlers_quest.go index a36c8116a..0739f1b07 100644 --- a/server/channelserver/handlers_quest.go +++ b/server/channelserver/handlers_quest.go @@ -238,8 +238,10 @@ func loadQuestFile(s *Session, questId int) []byte { } questBody.WriteBytes(newStrings.Data()) + s.server.questCacheLock.Lock() s.server.questCacheData[questId] = questBody.Data() s.server.questCacheTime[questId] = time.Now() + s.server.questCacheLock.Unlock() return questBody.Data() } diff --git a/server/channelserver/sys_channel_server.go b/server/channelserver/sys_channel_server.go index 32ec832c8..f62db7e34 100644 --- a/server/channelserver/sys_channel_server.go +++ b/server/channelserver/sys_channel_server.go @@ -75,6 +75,7 @@ type Server struct { raviente *Raviente + questCacheLock sync.RWMutex questCacheData map[int][]byte questCacheTime map[int]time.Time }