From 5544287cec583229baae22a4f730cdd7f4515129 Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Sat, 8 Feb 2025 01:41:57 +0900 Subject: [PATCH 1/2] dynamic_modules: add mut to &FilterConfig on filter creation Signed-off-by: Takeshi Yoneda --- source/extensions/dynamic_modules/sdk/rust/src/lib.rs | 6 +++--- test/extensions/dynamic_modules/test_data/rust/http.rs | 8 ++++---- .../test_data/rust/http_integration_test.rs | 8 ++++---- test/extensions/dynamic_modules/test_data/rust/no_op.rs | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/source/extensions/dynamic_modules/sdk/rust/src/lib.rs b/source/extensions/dynamic_modules/sdk/rust/src/lib.rs index 60c31012d47c..076caba5d475 100644 --- a/source/extensions/dynamic_modules/sdk/rust/src/lib.rs +++ b/source/extensions/dynamic_modules/sdk/rust/src/lib.rs @@ -109,7 +109,7 @@ pub static NEW_HTTP_FILTER_CONFIG_FUNCTION: OnceLock< /// imlementation is recommended to implement the [`Drop`] trait to handle the necessary cleanup. pub trait HttpFilterConfig { /// This is called when a HTTP filter chain is created for a new stream. - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { panic!("not implemented"); } } @@ -1047,14 +1047,14 @@ unsafe extern "C" fn envoy_dynamic_module_on_http_filter_new( let filter_config = { let raw = filter_config_ptr as *mut *mut dyn HttpFilterConfig; - &**raw + &mut **raw }; envoy_dynamic_module_on_http_filter_new_impl(&mut envoy_filter_config, filter_config) } fn envoy_dynamic_module_on_http_filter_new_impl( envoy_filter_config: &mut EnvoyHttpFilterConfigImpl, - filter_config: &dyn HttpFilterConfig, + filter_config: &mut dyn HttpFilterConfig, ) -> abi::envoy_dynamic_module_type_http_filter_module_ptr { let filter = filter_config.new_http_filter(envoy_filter_config); wrap_into_c_void_ptr!(filter) diff --git a/test/extensions/dynamic_modules/test_data/rust/http.rs b/test/extensions/dynamic_modules/test_data/rust/http.rs index 375b64d0c2e2..c5474f2264b2 100644 --- a/test/extensions/dynamic_modules/test_data/rust/http.rs +++ b/test/extensions/dynamic_modules/test_data/rust/http.rs @@ -35,7 +35,7 @@ struct HeaderCallbacksFilterConfig {} impl HttpFilterConfig for HeaderCallbacksFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(HeaderCallbacksFilter {}) } } @@ -239,7 +239,7 @@ struct SendResponseFilterConfig {} impl HttpFilterConfig for SendResponseFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(SendResponseFilter {}) } } @@ -274,7 +274,7 @@ struct DynamicMetadataCallbacksFilterConfig {} impl HttpFilterConfig for DynamicMetadataCallbacksFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(DynamicMetadataCallbacksFilter {}) } } @@ -365,7 +365,7 @@ struct BodyCallbacksFilterConfig {} impl HttpFilterConfig for BodyCallbacksFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(BodyCallbacksFilter::default()) } } diff --git a/test/extensions/dynamic_modules/test_data/rust/http_integration_test.rs b/test/extensions/dynamic_modules/test_data/rust/http_integration_test.rs index eaeee88f7dc1..b389e73cbce0 100644 --- a/test/extensions/dynamic_modules/test_data/rust/http_integration_test.rs +++ b/test/extensions/dynamic_modules/test_data/rust/http_integration_test.rs @@ -32,7 +32,7 @@ struct PassthroughHttpFilterConfig {} impl HttpFilterConfig for PassthroughHttpFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(PassthroughHttpFilter {}) } } @@ -48,7 +48,7 @@ struct HeadersHttpFilterConfig { impl HttpFilterConfig for HeadersHttpFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { let headers_to_add: Vec<(String, String)> = self .headers_to_add .split(',') @@ -165,7 +165,7 @@ struct BodyCallbacksFilterConfig { impl HttpFilterConfig for BodyCallbacksFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(BodyCallbacksFilter { immediate_end_of_stream: self.immediate_end_of_stream, seen_request_body: false, @@ -258,7 +258,7 @@ struct SendResponseHttpFilterConfig { impl HttpFilterConfig for SendResponseHttpFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(SendResponseHttpFilter { on_request_headers: self.on_request_headers, }) diff --git a/test/extensions/dynamic_modules/test_data/rust/no_op.rs b/test/extensions/dynamic_modules/test_data/rust/no_op.rs index c1d756d459de..b231071cb190 100644 --- a/test/extensions/dynamic_modules/test_data/rust/no_op.rs +++ b/test/extensions/dynamic_modules/test_data/rust/no_op.rs @@ -38,7 +38,7 @@ struct NopHttpFilterConfig { impl HttpFilterConfig for NopHttpFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(NopHttpFilter { on_request_headers_called: false, on_request_body_called: false, From 580c4d4f9aa453827473cc0365b10fc01079a7a7 Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Fri, 7 Feb 2025 16:57:52 +0000 Subject: [PATCH 2/2] fix Signed-off-by: Takeshi Yoneda --- .../dynamic_modules/sdk/rust/src/lib_test.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/extensions/dynamic_modules/sdk/rust/src/lib_test.rs b/source/extensions/dynamic_modules/sdk/rust/src/lib_test.rs index b6d3dc8da1db..b7441fae7cb7 100644 --- a/source/extensions/dynamic_modules/sdk/rust/src/lib_test.rs +++ b/source/extensions/dynamic_modules/sdk/rust/src/lib_test.rs @@ -82,7 +82,7 @@ fn test_envoy_dynamic_module_on_http_filter_new_destroy() { impl HttpFilterConfig for TestHttpFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(TestHttpFilter) } } @@ -95,12 +95,12 @@ fn test_envoy_dynamic_module_on_http_filter_new_destroy() { } } - let filter_config = TestHttpFilterConfig; + let mut filter_config = TestHttpFilterConfig; let result = envoy_dynamic_module_on_http_filter_new_impl( &mut EnvoyHttpFilterConfigImpl { raw_ptr: std::ptr::null_mut(), }, - &filter_config, + &mut filter_config, ); assert!(!result.is_null()); @@ -118,7 +118,7 @@ fn test_envoy_dynamic_module_on_http_filter_callbacks() { impl HttpFilterConfig for TestHttpFilterConfig { - fn new_http_filter(&self, _envoy: &mut EC) -> Box> { + fn new_http_filter(&mut self, _envoy: &mut EC) -> Box> { Box::new(TestHttpFilter) } } @@ -185,12 +185,12 @@ fn test_envoy_dynamic_module_on_http_filter_callbacks() { } } - let filter_config = TestHttpFilterConfig; + let mut filter_config = TestHttpFilterConfig; let filter = envoy_dynamic_module_on_http_filter_new_impl( &mut EnvoyHttpFilterConfigImpl { raw_ptr: std::ptr::null_mut(), }, - &filter_config, + &mut filter_config, ); unsafe {