From 3f405fc67e34b87d5485ea38ff0b4a0a301501c1 Mon Sep 17 00:00:00 2001 From: Chomp Date: Wed, 6 Aug 2025 17:04:49 +0100 Subject: [PATCH] Reduced scope of lock used in `GetExpiredOfferItems()` --- .../Utils/RagfairOfferHolder.cs | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Utils/RagfairOfferHolder.cs b/Libraries/SPTarkov.Server.Core/Utils/RagfairOfferHolder.cs index 5a69fa18..e4c27f14 100644 --- a/Libraries/SPTarkov.Server.Core/Utils/RagfairOfferHolder.cs +++ b/Libraries/SPTarkov.Server.Core/Utils/RagfairOfferHolder.cs @@ -351,30 +351,33 @@ public class RagfairOfferHolder( /// Expired offer assorts public IEnumerable> GetExpiredOfferItems() { + List expiredOfferIdsCopy; lock (_expiredOfferIdsLock) { - // list of lists of item+children - var expiredItems = new List>(); - foreach (var expiredOfferId in _expiredOfferIds) + expiredOfferIdsCopy = _expiredOfferIds.ToList(); + } + + // list of lists of item+children + var expiredItems = new List>(); + foreach (var expiredOfferId in expiredOfferIdsCopy) + { + var offer = GetOfferById(expiredOfferId); + if (offer is null) { - var offer = GetOfferById(expiredOfferId); - if (offer is null) - { - _logger.Warning($"Expired offerId: {expiredOfferId} not found, skipping"); - continue; - } - - if (offer.Items?.Count == 0) - { - _logger.Error($"Expired offerId: {expiredOfferId} has no items, skipping"); - continue; - } - - expiredItems.Add(offer.Items); + _logger.Warning($"Expired offerId: {expiredOfferId} not found, skipping"); + continue; } - return expiredItems; + if (offer.Items?.Count == 0) + { + _logger.Error($"Expired offerId: {expiredOfferId} has no items, skipping"); + continue; + } + + expiredItems.Add(offer.Items); } + + return expiredItems; } ///