diff --git a/source/common/router/config_impl.cc b/source/common/router/config_impl.cc index 552ca7275238..43621577b1b7 100644 --- a/source/common/router/config_impl.cc +++ b/source/common/router/config_impl.cc @@ -700,10 +700,11 @@ RouteEntryImplBase::RouteEntryImplBase(const VirtualHostImpl& vhost, } bool RouteEntryImplBase::evaluateRuntimeMatch(const uint64_t random_value) const { - return !runtime_ ? true - : loader_.snapshot().featureEnabled(runtime_->fractional_runtime_key_, - runtime_->fractional_runtime_default_, - random_value); + return runtime_ == nullptr + ? true + : loader_.snapshot().featureEnabled(runtime_->fractional_runtime_key_, + runtime_->fractional_runtime_default_, + random_value); } absl::string_view @@ -890,18 +891,15 @@ RouteEntryImplBase::getResponseHeaderParsers(bool specificity_ascend) const { specificity_ascend); } -absl::optional +std::unique_ptr RouteEntryImplBase::loadRuntimeData(const envoy::config::route::v3::RouteMatch& route_match) { - absl::optional runtime; - RuntimeData runtime_data; - if (route_match.has_runtime_fraction()) { - runtime_data.fractional_runtime_default_ = route_match.runtime_fraction().default_value(); - runtime_data.fractional_runtime_key_ = route_match.runtime_fraction().runtime_key(); + auto runtime_data = std::make_unique(); + runtime_data->fractional_runtime_default_ = route_match.runtime_fraction().default_value(); + runtime_data->fractional_runtime_key_ = route_match.runtime_fraction().runtime_key(); return runtime_data; } - - return runtime; + return nullptr; } const std::string& diff --git a/source/common/router/config_impl.h b/source/common/router/config_impl.h index 367f3b53e4c2..389139a889b1 100644 --- a/source/common/router/config_impl.h +++ b/source/common/router/config_impl.h @@ -967,7 +967,8 @@ class RouteEntryImplBase : public RouteEntryAndRoute, absl::InlinedVector getResponseHeaderParsers(bool specificity_ascend) const; - absl::optional loadRuntimeData(const envoy::config::route::v3::RouteMatch& route); + std::unique_ptr + loadRuntimeData(const envoy::config::route::v3::RouteMatch& route); static std::multimap parseOpaqueConfig(const envoy::config::route::v3::Route& route); @@ -1033,7 +1034,7 @@ class RouteEntryImplBase : public RouteEntryAndRoute, const absl::optional max_grpc_timeout_; const absl::optional grpc_timeout_offset_; Runtime::Loader& loader_; - const absl::optional runtime_; + std::unique_ptr runtime_; const std::string scheme_redirect_; const std::string host_redirect_; const std::string port_redirect_;