From 1f0544fd10b6b4eef2fad02886a46f432ebf358d Mon Sep 17 00:00:00 2001 From: Houmgaor Date: Mon, 23 Mar 2026 10:15:25 +0100 Subject: [PATCH] fix(savedata): add recovery hint to integrity check failure log Admins importing saves from another server instance will hit the hash mismatch error with no guidance. The log message now tells them to set DisableSaveIntegrityCheck=true or null the hash for the specific character via SQL. --- server/channelserver/handlers_character.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/channelserver/handlers_character.go b/server/channelserver/handlers_character.go index 3fc8fb60b..429dc1a23 100644 --- a/server/channelserver/handlers_character.go +++ b/server/channelserver/handlers_character.go @@ -59,7 +59,9 @@ func GetCharacterSaveData(s *Session, charID uint32) (*CharacterSaveData, error) if storedHash != nil && !s.server.erupeConfig.DisableSaveIntegrityCheck { computedHash := sha256.Sum256(saveData.decompSave) if !bytes.Equal(storedHash, computedHash[:]) { - s.logger.Error("Savedata integrity check failed: hash mismatch", + s.logger.Error("Savedata integrity check failed: hash mismatch — "+ + "if this character was imported from another server, set DisableSaveIntegrityCheck=true in config.json "+ + "or run: UPDATE characters SET savedata_hash = NULL WHERE id = ", zap.Uint32("charID", charID), zap.Binary("stored_hash", storedHash), zap.Binary("computed_hash", computedHash[:]),