33#include < cstdint>
44#include < memory>
55
6- #include " source/common/http/utility.h"
7-
86#include " absl/container/inlined_vector.h"
97
108namespace Envoy {
@@ -15,16 +13,10 @@ namespace HttpFilters {
1513DynamicModuleHttpFilter::~DynamicModuleHttpFilter () { destroy (); }
1614
1715void DynamicModuleHttpFilter::initializeInModuleFilter () {
18- if (in_module_filter_ != nullptr ) {
19- return ;
20- }
2116 in_module_filter_ = config_->on_http_filter_new_ (config_->in_module_config_ , thisAsVoidPtr ());
2217}
2318
2419void DynamicModuleHttpFilter::onStreamComplete () {
25- if (in_module_filter_ == nullptr ) {
26- return ;
27- }
2820 config_->on_http_filter_stream_complete_ (thisAsVoidPtr (), in_module_filter_);
2921}
3022
@@ -82,35 +74,13 @@ void DynamicModuleHttpFilter::destroy() {
8274}
8375
8476FilterHeadersStatus DynamicModuleHttpFilter::decodeHeaders (RequestHeaderMap&, bool end_of_stream) {
85- if (decoder_callbacks_->route ()) {
86- const auto * per_route_config =
87- Http::Utility::resolveMostSpecificPerFilterConfig<DynamicModuleHttpPerRouteFilterConfig>(
88- decoder_callbacks_);
89- if (per_route_config && per_route_config->disabled_ ) {
90- is_disabled_ = true ;
91- in_continue_ = true ;
92- return FilterHeadersStatus::Continue;
93- }
94- }
95-
96- if (in_module_filter_ == nullptr ) {
97- initializeInModuleFilter ();
98- }
99-
10077 const envoy_dynamic_module_type_on_http_filter_request_headers_status status =
10178 config_->on_http_filter_request_headers_ (thisAsVoidPtr (), in_module_filter_, end_of_stream);
10279 in_continue_ = status == envoy_dynamic_module_type_on_http_filter_request_headers_status_Continue;
10380 return static_cast <FilterHeadersStatus>(status);
10481};
10582
10683FilterDataStatus DynamicModuleHttpFilter::decodeData (Buffer::Instance& chunk, bool end_of_stream) {
107- if (is_disabled_) {
108- if (end_of_stream && decoder_callbacks_->decodingBuffer ()) {
109- decoder_callbacks_->addDecodedData (chunk, false );
110- }
111- in_continue_ = true ;
112- return FilterDataStatus::Continue;
113- }
11484 if (end_of_stream && decoder_callbacks_->decodingBuffer ()) {
11585 // To make the very last chunk of the body available to the filter when buffering is enabled,
11686 // we need to call addDecodedData. See the code comment there for more details.
@@ -125,10 +95,6 @@ FilterDataStatus DynamicModuleHttpFilter::decodeData(Buffer::Instance& chunk, bo
12595};
12696
12797FilterTrailersStatus DynamicModuleHttpFilter::decodeTrailers (RequestTrailerMap&) {
128- if (is_disabled_) {
129- in_continue_ = true ;
130- return FilterTrailersStatus::Continue;
131- }
13298 const envoy_dynamic_module_type_on_http_filter_request_trailers_status status =
13399 config_->on_http_filter_request_trailers_ (thisAsVoidPtr (), in_module_filter_);
134100 in_continue_ =
@@ -150,30 +116,8 @@ Filter1xxHeadersStatus DynamicModuleHttpFilter::encode1xxHeaders(ResponseHeaderM
150116
151117FilterHeadersStatus DynamicModuleHttpFilter::encodeHeaders (ResponseHeaderMap&, bool end_of_stream) {
152118 if (sent_local_reply_) { // See the comment on the flag.
153- in_continue_ = true ;
154119 return FilterHeadersStatus::Continue;
155120 }
156-
157- // Check per-route config for disabled flag if not already checked in decodeHeaders.
158- if (in_module_filter_ == nullptr ) {
159- if (encoder_callbacks_->route ()) {
160- const auto * per_route_config =
161- Http::Utility::resolveMostSpecificPerFilterConfig<DynamicModuleHttpPerRouteFilterConfig>(
162- encoder_callbacks_);
163- if (per_route_config && per_route_config->disabled_ ) {
164- is_disabled_ = true ;
165- in_continue_ = true ;
166- return FilterHeadersStatus::Continue;
167- }
168- }
169- initializeInModuleFilter ();
170- }
171-
172- if (is_disabled_) {
173- in_continue_ = true ;
174- return FilterHeadersStatus::Continue;
175- }
176-
177121 const envoy_dynamic_module_type_on_http_filter_response_headers_status status =
178122 config_->on_http_filter_response_headers_ (thisAsVoidPtr (), in_module_filter_, end_of_stream);
179123 in_continue_ =
@@ -182,11 +126,7 @@ FilterHeadersStatus DynamicModuleHttpFilter::encodeHeaders(ResponseHeaderMap&, b
182126};
183127
184128FilterDataStatus DynamicModuleHttpFilter::encodeData (Buffer::Instance& chunk, bool end_of_stream) {
185- if (sent_local_reply_ || is_disabled_) { // See the comment on the flag.
186- if (end_of_stream && encoder_callbacks_->encodingBuffer ()) {
187- encoder_callbacks_->addEncodedData (chunk, false );
188- }
189- in_continue_ = true ;
129+ if (sent_local_reply_) { // See the comment on the flag.
190130 return FilterDataStatus::Continue;
191131 }
192132 if (end_of_stream && encoder_callbacks_->encodingBuffer ()) {
@@ -203,8 +143,7 @@ FilterDataStatus DynamicModuleHttpFilter::encodeData(Buffer::Instance& chunk, bo
203143};
204144
205145FilterTrailersStatus DynamicModuleHttpFilter::encodeTrailers (ResponseTrailerMap&) {
206- if (sent_local_reply_ || is_disabled_) { // See the comment on the flag.
207- in_continue_ = true ;
146+ if (sent_local_reply_) { // See the comment on the flag.
208147 return FilterTrailersStatus::Continue;
209148 }
210149 const envoy_dynamic_module_type_on_http_filter_response_trailers_status status =
0 commit comments