diff --git a/openfeature/client_api.h b/openfeature/client_api.h index cb4f338..e1d7f29 100644 --- a/openfeature/client_api.h +++ b/openfeature/client_api.h @@ -113,11 +113,17 @@ template ClientAPI::EvaluateFlag( ValueType default_value, const std::optional& ctx, ProviderCallable provider_call) { - if (GetProviderStatus() != ProviderStatus::kReady) { + ProviderStatus status = GetProviderStatus(); + if (status == ProviderStatus::kNotReady) { return std::make_unique( default_value, Reason::kError, std::nullopt, FlagMetadata(), ErrorCode::kProviderNotReady, "Provider is not ready"); } + if (status == ProviderStatus::kFatal) { + return std::make_unique( + default_value, Reason::kError, std::nullopt, FlagMetadata(), + ErrorCode::kProviderFatal, "Provider is in fatal error state"); + } std::shared_ptr provider = provider_repository_.GetProvider(domain_);