@@ -127,9 +127,12 @@ class SslRedirectRoute : public Route {
127127 const RouteEntry* routeEntry () const override { return nullptr ; }
128128 const Decorator* decorator () const override { return nullptr ; }
129129 const RouteTracing* tracingConfig () const override { return nullptr ; }
130- const RouteSpecificFilterConfig* perFilterConfig (const std::string&) const override {
130+ const RouteSpecificFilterConfig* mostSpecificPerFilterConfig (const std::string&) const override {
131131 return nullptr ;
132132 }
133+ void traversePerFilterConfig (
134+ const std::string&,
135+ std::function<void (const Router::RouteSpecificFilterConfig&)>) const override {}
133136 const envoy::config::core::v3::Metadata& metadata () const override { return metadata_; }
134137 const Envoy::Config::TypedMetadata& typedMetadata () const override { return typed_metadata_; }
135138
@@ -212,7 +215,7 @@ class VirtualHostImpl : public VirtualHost {
212215 Stats::StatName statName () const override { return stat_name_storage_.statName (); }
213216 const RateLimitPolicy& rateLimitPolicy () const override { return rate_limit_policy_; }
214217 const Config& routeConfig () const override ;
215- const RouteSpecificFilterConfig* perFilterConfig (const std::string&) const override ;
218+ const RouteSpecificFilterConfig* perFilterConfig (const std::string&) const ;
216219 bool includeAttemptCountInRequest () const override { return include_attempt_count_in_request_; }
217220 bool includeAttemptCountInResponse () const override { return include_attempt_count_in_response_; }
218221 const absl::optional<envoy::config::route::v3::RetryPolicy>& retryPolicy () const {
@@ -591,7 +594,14 @@ class RouteEntryImplBase : public RouteEntry,
591594 const RouteEntry* routeEntry () const override ;
592595 const Decorator* decorator () const override { return decorator_.get (); }
593596 const RouteTracing* tracingConfig () const override { return route_tracing_.get (); }
594- const RouteSpecificFilterConfig* perFilterConfig (const std::string&) const override ;
597+ const RouteSpecificFilterConfig*
598+ mostSpecificPerFilterConfig (const std::string& name) const override {
599+ auto * config = per_filter_configs_.get (name);
600+ return config ? config : vhost_.perFilterConfig (name);
601+ }
602+ void traversePerFilterConfig (
603+ const std::string& filter_name,
604+ std::function<void (const Router::RouteSpecificFilterConfig&)> cb) const override ;
595605
596606protected:
597607 const bool case_sensitive_;
@@ -737,9 +747,14 @@ class RouteEntryImplBase : public RouteEntry,
737747 const RouteEntry* routeEntry () const override { return this ; }
738748 const Decorator* decorator () const override { return parent_->decorator (); }
739749 const RouteTracing* tracingConfig () const override { return parent_->tracingConfig (); }
740-
741- const RouteSpecificFilterConfig* perFilterConfig (const std::string& name) const override {
742- return parent_->perFilterConfig (name);
750+ const RouteSpecificFilterConfig*
751+ mostSpecificPerFilterConfig (const std::string& name) const override {
752+ return parent_->mostSpecificPerFilterConfig (name);
753+ }
754+ void traversePerFilterConfig (
755+ const std::string& filter_name,
756+ std::function<void (const Router::RouteSpecificFilterConfig&)> cb) const override {
757+ parent_->traversePerFilterConfig (filter_name, cb);
743758 };
744759
745760 private:
@@ -789,7 +804,15 @@ class RouteEntryImplBase : public RouteEntry,
789804 Http::HeaderTransforms responseHeaderTransforms (const StreamInfo::StreamInfo& stream_info,
790805 bool do_formatting = true ) const override ;
791806
792- const RouteSpecificFilterConfig* perFilterConfig (const std::string& name) const override ;
807+ const RouteSpecificFilterConfig*
808+ mostSpecificPerFilterConfig (const std::string& name) const override {
809+ auto * config = per_filter_configs_.get (name);
810+ return config ? config : DynamicRouteEntry::mostSpecificPerFilterConfig (name);
811+ }
812+
813+ void traversePerFilterConfig (
814+ const std::string& filter_name,
815+ std::function<void (const Router::RouteSpecificFilterConfig&)> cb) const override ;
793816
794817 private:
795818 const std::string runtime_key_;
0 commit comments