Fix preferences sent to client not being sanitized (#27789)

Fucking whoops

In #27742 I made it so sanitization of character profiles was moved to be *after* database load. Except that means I moved it to be after the copy of all character profiles got sent to the client.

Move the sending to *also* be in that second load stage, and rename it. Fixes the issue.
This commit is contained in:
Pieter-Jan Briers
2024-05-08 04:24:54 +02:00
committed by GitHub
parent ab1a2de367
commit 9efe4dc701
3 changed files with 16 additions and 15 deletions

View File

@@ -199,27 +199,28 @@ namespace Content.Server.Preferences.Managers
{
var prefs = await GetOrCreatePreferencesAsync(session.UserId, cancel);
prefsData.Prefs = prefs;
prefsData.PrefsLoaded = true;
var msg = new MsgPreferencesAndSettings();
msg.Preferences = prefs;
msg.Settings = new GameSettings
{
MaxCharacterSlots = MaxCharacterSlots
};
_netManager.ServerSendMessage(msg, session.Channel);
}
}
}
public void SanitizeData(ICommonSession session)
public void FinishLoad(ICommonSession session)
{
// This is a separate step from the actual database load.
// Sanitizing preferences requires play time info due to loadouts.
// And play time info is loaded concurrently from the DB with preferences.
var data = _cachedPlayerPrefs[session.UserId];
DebugTools.Assert(data.Prefs != null);
data.Prefs = SanitizePreferences(session, data.Prefs, _dependencies);
var prefsData = _cachedPlayerPrefs[session.UserId];
DebugTools.Assert(prefsData.Prefs != null);
prefsData.Prefs = SanitizePreferences(session, prefsData.Prefs, _dependencies);
prefsData.PrefsLoaded = true;
var msg = new MsgPreferencesAndSettings();
msg.Preferences = prefsData.Prefs;
msg.Settings = new GameSettings
{
MaxCharacterSlots = MaxCharacterSlots
};
_netManager.ServerSendMessage(msg, session.Channel);
}
public void OnClientDisconnected(ICommonSession session)