3
0
Mirror von https://github.com/GeyserMC/Geyser.git synchronisiert 2024-11-20 06:50:09 +01:00

Prevent concurrency issues with SkinProvider#requestedSkins

There is a small potential here to return null if containsKey runs before remove and then get is called.
Dieser Commit ist enthalten in:
Camotoy 2021-09-10 16:32:09 -04:00
Ursprung b69cc8eba5
Commit 3632ebda8b
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 7EEFB66FE798081F

Datei anzeigen

@ -163,7 +163,11 @@ public class SkinProvider {
public static CompletableFuture<Skin> requestSkin(UUID playerId, String textureUrl, boolean newThread) { public static CompletableFuture<Skin> requestSkin(UUID playerId, String textureUrl, boolean newThread) {
if (textureUrl == null || textureUrl.isEmpty()) return CompletableFuture.completedFuture(EMPTY_SKIN); if (textureUrl == null || textureUrl.isEmpty()) return CompletableFuture.completedFuture(EMPTY_SKIN);
if (requestedSkins.containsKey(textureUrl)) return requestedSkins.get(textureUrl); // already requested CompletableFuture<Skin> requestedSkin = requestedSkins.get(textureUrl);
if (requestedSkin != null) {
// already requested
return requestedSkin;
}
Skin cachedSkin = getCachedSkin(textureUrl); Skin cachedSkin = getCachedSkin(textureUrl);
if (cachedSkin != null) { if (cachedSkin != null) {