diff --git a/source/common/router/config_impl.cc b/source/common/router/config_impl.cc index 08b3442bbb63..9029da2d6643 100644 --- a/source/common/router/config_impl.cc +++ b/source/common/router/config_impl.cc @@ -1399,7 +1399,9 @@ RouteConstSharedPtr RouteEntryImplBase::pickWeightedCluster(const Http::HeaderMa static_cast(cluster.get())); return cluster_specifier_plugin_->route(route, *request_header); } - return cluster_specifier_plugin_->route(cluster, *request_header); + auto route = std::make_shared(cluster.get(), shared_from_this(), + cluster->clusterName()); + return cluster_specifier_plugin_->route(route, *request_header); } #endif if (!cluster->clusterHeaderName().get().empty() && diff --git a/source/common/router/config_impl.h b/source/common/router/config_impl.h index fd012818f04b..9534ecae2ff9 100644 --- a/source/common/router/config_impl.h +++ b/source/common/router/config_impl.h @@ -1034,8 +1034,8 @@ class RouteEntryImplBase : public RouteEntryAndRoute, } RouteConstSharedPtr clone(const std::string& name) const { - return std::make_shared( - parent_, shared_from_this(), name); + return std::make_shared(parent_, owner_, + name); } virtual RouteConstSharedPtr getRouteConstSharedPtr() const { return shared_from_this(); }