From 8c35b7b0c1e684a0f2c03b45683080850105fbf9 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Fri, 20 Jan 2023 16:49:29 +0100 Subject: [PATCH] fix(core): save CurrentState to avoid race condition --- Core/NosSmooth.Core/Contracts/DefaultContract.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/NosSmooth.Core/Contracts/DefaultContract.cs b/Core/NosSmooth.Core/Contracts/DefaultContract.cs index 6dc5031..9f0839b 100644 --- a/Core/NosSmooth.Core/Contracts/DefaultContract.cs +++ b/Core/NosSmooth.Core/Contracts/DefaultContract.cs @@ -129,18 +129,19 @@ public class DefaultContract : IContract return ContractUpdateResponse.NotInterested; } - if (CurrentState.CompareTo(_defaultState) == 0) + var currentState = CurrentState; + if (currentState.CompareTo(_defaultState) == 0) { // cannot update with default state. OnlyExecute has to be called first and update the state. return ContractUpdateResponse.NotInterested; } - if (!_actions.ContainsKey(CurrentState)) + if (!_actions.ContainsKey(currentState)) { Unregister(); return ContractUpdateResponse.NotInterested; } - var result = await _actions[CurrentState](data, ct); + var result = await _actions[currentState](data, ct); if (!result.IsDefined(out var resultData)) { _shouldReact = false; @@ -246,7 +247,6 @@ public class DefaultContract : IContract var result = await OnlyExecuteAsync(ct); if (!result.IsSuccess) { - Unregister(); return Result.FromError(result); } } -- 2.49.0