Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions source/extensions/filters/http/ext_proc/ext_proc.h
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,7 @@ class FilterConfigPerRoute : public Router::RouteSpecificFilterConfig {
class Filter : public Logger::Loggable<Logger::Id::ext_proc>,
public Http::PassThroughFilter,
public ExternalProcessorCallbacks {
friend class FilterAccessor;
// The result of an attempt to open the stream
enum class StreamOpenState {
// The stream was opened successfully
Expand Down
2 changes: 2 additions & 0 deletions source/extensions/filters/network/ext_proc/ext_proc.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,8 @@ class MessageTimeoutManager : public Logger::Loggable<Logger::Id::ext_proc> {
class NetworkExtProcFilter : public Envoy::Network::Filter,
ExternalProcessorCallbacks,
Envoy::Logger::Loggable<Envoy::Logger::Id::ext_proc> {
friend class NetworkExtProcFilterAccessor;

public:
// The result of an attempt to open the stream
enum class StreamOpenState {
Expand Down
7 changes: 6 additions & 1 deletion test/coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,16 @@ directories:
source/extensions/common/wasm/ext: 100.0
source/extensions/clusters/dynamic_modules: 97.7
source/extensions/filters/common: 97.1
source/extensions/filters/common/ext_proc: 98.0
source/extensions/filters/common/fault: 94.5
source/extensions/filters/common/lua: 95.6
source/extensions/filters/http/a2a: 98.4
source/extensions/filters/http/cache: 95.9
source/extensions/filters/http/dynamic_forward_proxy: 94.8
source/extensions/filters/http/dynamic_modules: 95.5
source/extensions/filters/http/decompressor: 95.9
source/extensions/filters/http/ext_proc: 96.5
source/extensions/filters/http/ext_proc: 98.0
source/extensions/filters/http/ext_proc/http_client: 100.0
source/extensions/filters/http/grpc_json_reverse_transcoder: 94.9
source/extensions/filters/http/grpc_json_transcoder: 94.1 # TODO(#28232)
source/extensions/filters/http/ip_tagging: 95.9
Expand All @@ -56,6 +58,7 @@ directories:
source/extensions/filters/listener/original_src: 92.1
source/extensions/filters/listener/tls_inspector: 94.5
source/extensions/filters/network/dubbo_proxy: 96.2
source/extensions/filters/network/ext_proc: 98.0
source/extensions/filters/network/mongo_proxy: 96.1
source/extensions/filters/network/reverse_tunnel: 95.9
source/extensions/filters/network/sni_cluster: 88.9
Expand Down Expand Up @@ -88,6 +91,8 @@ directories:
source/extensions/health_checkers: 96.1
source/extensions/health_checkers/http: 94.6
source/extensions/health_checkers/grpc: 92.3
source/extensions/http/ext_proc/processing_request_modifiers/mapped_attribute_builder: 98.0
source/extensions/http/ext_proc/response_processors/save_processing_response: 98.0
source/extensions/config_subscription/rest: 94.9
source/extensions/matching/input_matchers/cel_matcher: 100.0
source/extensions/dynamic_modules/sdk/cpp: 0.0 # SDK code self not directly tested
27 changes: 27 additions & 0 deletions test/extensions/filters/http/ext_proc/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,33 @@ envoy_extension_cc_test(
],
)

envoy_extension_cc_test(
name = "save_processing_response_test",
size = "small",
srcs = ["save_processing_response_test.cc"],
extension_names = ["envoy.filters.http.ext_proc"],
rbe_pool = "6gig",
tags = ["skip_on_windows"],
deps = [
"//source/extensions/http/ext_proc/response_processors/save_processing_response:save_processing_response_lib",
"//test/mocks/stream_info:stream_info_mocks",
"//test/test_common:utility_lib",
],
)

envoy_extension_cc_test(
name = "logging_info_test",
size = "small",
srcs = ["logging_info_test.cc"],
extension_names = ["envoy.filters.http.ext_proc"],
rbe_pool = "6gig",
tags = ["skip_on_windows"],
deps = [
"//source/extensions/filters/http/ext_proc",
"//test/test_common:utility_lib",
],
)

envoy_extension_cc_test(
name = "mutation_utils_test",
size = "small",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1329,6 +1329,56 @@ TEST_F(StreamingLocalReplyTest, SaveStreamingLocalResponse) {
filter_->onDestroy();
}

TEST_F(StreamingLocalReplyTest, StartLocalResponseInvalidHeaders) {
initialize(R"EOF(
grpc_service:
envoy_grpc:
cluster_name: "ext_proc_server"
)EOF");

EXPECT_EQ(FilterHeadersStatus::StopIteration, filter_->decodeHeaders(request_headers_, false));

auto response = std::make_unique<ProcessingResponse>();
auto* headers_response =
response->mutable_streamed_immediate_response()->mutable_headers_response();
auto* h = headers_response->mutable_headers()->add_headers();
h->set_key(":status");
h->set_raw_value(std::string(1, '\0')); // Invalid header value

stream_callbacks_->onReceiveMessage(std::move(response));
}

TEST_F(StreamingLocalReplyTest, ProcessLocalTrailersInvalid) {
initialize(R"EOF(
grpc_service:
envoy_grpc:
cluster_name: "ext_proc_server"
)EOF");

EXPECT_EQ(FilterHeadersStatus::StopIteration, filter_->decodeHeaders(request_headers_, true));

// Start local response
auto response1 = std::make_unique<ProcessingResponse>();
auto* headers_response =
response1->mutable_streamed_immediate_response()->mutable_headers_response();
auto* h1 = headers_response->mutable_headers()->add_headers();
h1->set_key(":status");
h1->set_raw_value("200");
headers_response->set_end_of_stream(false);

stream_callbacks_->onReceiveMessage(std::move(response1));

// Send invalid trailers
auto response2 = std::make_unique<ProcessingResponse>();
auto* trailers_response =
response2->mutable_streamed_immediate_response()->mutable_trailers_response();
auto* h2 = trailers_response->add_headers();
h2->set_key("invalid name");
h2->set_raw_value("value");

stream_callbacks_->onReceiveMessage(std::move(response2));
}

} // namespace
} // namespace ExternalProcessing
} // namespace HttpFilters
Expand Down
Loading
Loading