diff --git a/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
index d79f5110..8ffc1c97 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
@@ -32,7 +32,7 @@ public class TradeHelper(
ICloner _cloner
)
{
- protected static Lock buyLock = new();
+ protected static readonly Lock buyLock = new();
///
/// Buy item from flea or trader
diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairOfferService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairOfferService.cs
index e92c55b8..df552cfc 100644
--- a/Libraries/SPTarkov.Server.Core/Services/RagfairOfferService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/RagfairOfferService.cs
@@ -157,10 +157,10 @@ public class RagfairOfferService(
public void RemoveExpiredOffers()
{
// Gather all stale offers
- var staleOffersIds = ragfairOfferHolder.GetStaleOfferIds();
- foreach (var offerId in staleOffersIds)
+ var staleOfferIds = ragfairOfferHolder.GetStaleOfferIds();
+ foreach (var offerId in staleOfferIds)
{
- ProcessStaleOffer(offerId);
+ ProcessStaleOffer(offerId, false);
}
// Clear out expired offer ids now we've processed them above
@@ -173,9 +173,14 @@ public class RagfairOfferService(
/// Skip trader offers - we want those to remain in 'expired' state until trader refresh
///
/// Stale offer id to process
- protected void ProcessStaleOffer(string staleOfferId)
+ /// OPTIONAL - Flag the passed in offer as expired default = true
+ protected void ProcessStaleOffer(string staleOfferId, bool flagOfferAsExpired = true)
{
var staleOffer = ragfairOfferHolder.GetOfferById(staleOfferId);
+ if (staleOffer is null)
+ {
+ return;
+ }
// Skip trader offers, managed by RagfairServer.Update() + should remain on flea as 'expired'
if (ragfairServerHelper.IsTrader(staleOffer.User.Id))
@@ -185,7 +190,7 @@ public class RagfairOfferService(
// Handle dynamic offer from PMCs
var isPlayer = profileHelper.IsPlayer(staleOffer.User.Id.RegexReplace("^pmc", ""));
- if (!isPlayer)
+ if (flagOfferAsExpired && !isPlayer)
{
// Not trader/player offer
ragfairOfferHolder.FlagOfferAsExpired(staleOffer.Id);