From d00291622ea1e012e8f5dc919d251da79140f84e Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Fri, 30 Jul 2021 19:24:56 +0900 Subject: [PATCH 1/3] wasm: update Proxy-Wasm C++ host. Signed-off-by: Takeshi Yoneda --- bazel/repository_locations.bzl | 6 +++--- source/extensions/common/wasm/ext/envoy_null_plugin.h | 6 +++--- source/extensions/common/wasm/wasm.cc | 8 ++------ test/extensions/common/wasm/wasm_vm_test.cc | 10 +++++----- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index a4b339cc7951a..0432306a10c5c 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -975,8 +975,8 @@ REPOSITORY_LOCATIONS_SPEC = dict( project_name = "WebAssembly for Proxies (C++ host implementation)", project_desc = "WebAssembly for Proxies (C++ host implementation)", project_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-host", - version = "82633e3ea94cdb96604e7fb01e3c0a36eb35c54d", - sha256 = "850e00833f27113a3ef74811233a596ebf0e08477f84eb0dc993f7009ae1ca95", + version = "2c8744718baeaa01034b29f72c30a4e8007d1356", + sha256 = "5aa1b8af1bcaf77f08883873bfdb1febe514f4c035f7462250e707b8e386e0d6", strip_prefix = "proxy-wasm-cpp-host-{version}", urls = ["https://github.com/proxy-wasm/proxy-wasm-cpp-host/archive/{version}.tar.gz"], use_category = ["dataplane_ext"], @@ -992,7 +992,7 @@ REPOSITORY_LOCATIONS_SPEC = dict( "envoy.wasm.runtime.wavm", "envoy.wasm.runtime.wasmtime", ], - release_date = "2021-07-13", + release_date = "2021-07-30", cpe = "N/A", ), proxy_wasm_rust_sdk = dict( diff --git a/source/extensions/common/wasm/ext/envoy_null_plugin.h b/source/extensions/common/wasm/ext/envoy_null_plugin.h index 49544355f4623..99a4963a41677 100644 --- a/source/extensions/common/wasm/ext/envoy_null_plugin.h +++ b/source/extensions/common/wasm/ext/envoy_null_plugin.h @@ -15,8 +15,8 @@ namespace Extensions { namespace Common { namespace Wasm { -proxy_wasm::Word resolve_dns(void* raw_context, proxy_wasm::Word dns_address, - proxy_wasm::Word dns_address_size, proxy_wasm::Word token_ptr); +proxy_wasm::Word resolve_dns(proxy_wasm::Word dns_address, proxy_wasm::Word dns_address_size, + proxy_wasm::Word token_ptr); } // namespace Wasm } // namespace Common @@ -36,7 +36,7 @@ using namespace proxy_wasm::null_plugin; inline WasmResult envoy_resolve_dns(const char* dns_address, size_t dns_address_size, uint32_t* token) { return static_cast( - ::Envoy::Extensions::Common::Wasm::resolve_dns(proxy_wasm::current_context_, WR(dns_address), + ::Envoy::Extensions::Common::Wasm::resolve_dns(WR(dns_address), WS(dns_address_size), WR(token)) .u64_); } diff --git a/source/extensions/common/wasm/wasm.cc b/source/extensions/common/wasm/wasm.cc index a126cac544c65..290890f83dd4b 100644 --- a/source/extensions/common/wasm/wasm.cc +++ b/source/extensions/common/wasm/wasm.cc @@ -11,10 +11,6 @@ #include "absl/strings/str_cat.h" -#define WASM_CONTEXT(_c) \ - static_cast(proxy_wasm::exports::ContextOrEffectiveContext( \ - static_cast((void)_c, proxy_wasm::current_context_))) - using proxy_wasm::FailState; using proxy_wasm::Word; @@ -152,8 +148,8 @@ Wasm::~Wasm() { } // NOLINTNEXTLINE(readability-identifier-naming) -Word resolve_dns(void* raw_context, Word dns_address_ptr, Word dns_address_size, Word token_ptr) { - auto context = WASM_CONTEXT(raw_context); +Word resolve_dns(Word dns_address_ptr, Word dns_address_size, Word token_ptr) { + auto context = static_cast(proxy_wasm::contextOrEffectiveContext()); auto root_context = context->isRootContext() ? context : context->rootContext(); auto address = context->wasmVm()->getMemory(dns_address_ptr, dns_address_size); if (!address) { diff --git a/test/extensions/common/wasm/wasm_vm_test.cc b/test/extensions/common/wasm/wasm_vm_test.cc index f812bc88cbe24..0489d96c102f5 100644 --- a/test/extensions/common/wasm/wasm_vm_test.cc +++ b/test/extensions/common/wasm/wasm_vm_test.cc @@ -103,18 +103,18 @@ class MockHostFunctions { #if defined(PROXY_WASM_HAS_RUNTIME_V8) MockHostFunctions* g_host_functions; -void pong(void*, Word value) { g_host_functions->pong(convertWordToUint32(value)); } +void pong(Word value) { g_host_functions->pong(convertWordToUint32(value)); } -Word random(void*) { return {g_host_functions->random()}; } +Word random() { return {g_host_functions->random()}; } // pong() with wrong number of arguments. -void bad_pong1(void*) {} +void bad_pong1() {} // pong() with wrong return type. -Word bad_pong2(void*, Word) { return 2; } +Word bad_pong2(Word) { return 2; } // pong() with wrong argument type. -double bad_pong3(void*, double) { return 3; } +double bad_pong3(double) { return 3; } class WasmVmTest : public testing::TestWithParam { public: From b6f73838934442ec531695375edcca02f18ef3e1 Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Tue, 3 Aug 2021 08:51:15 +0900 Subject: [PATCH 2/3] Update to the latest Signed-off-by: Takeshi Yoneda --- bazel/repository_locations.bzl | 4 ++-- test/extensions/common/wasm/wasm_vm_test.cc | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index 0432306a10c5c..3266c0df5bf5b 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -975,8 +975,8 @@ REPOSITORY_LOCATIONS_SPEC = dict( project_name = "WebAssembly for Proxies (C++ host implementation)", project_desc = "WebAssembly for Proxies (C++ host implementation)", project_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-host", - version = "2c8744718baeaa01034b29f72c30a4e8007d1356", - sha256 = "5aa1b8af1bcaf77f08883873bfdb1febe514f4c035f7462250e707b8e386e0d6", + version = "d32cb05cb666216db5e1a383c1ffa2c1aeec19bb", + sha256 = "c81b948fde4c0bebc3e1d32d3507052bc788153179e2229686aa28e817ee6913", strip_prefix = "proxy-wasm-cpp-host-{version}", urls = ["https://github.com/proxy-wasm/proxy-wasm-cpp-host/archive/{version}.tar.gz"], use_category = ["dataplane_ext"], diff --git a/test/extensions/common/wasm/wasm_vm_test.cc b/test/extensions/common/wasm/wasm_vm_test.cc index 0489d96c102f5..dd4b7412af3cc 100644 --- a/test/extensions/common/wasm/wasm_vm_test.cc +++ b/test/extensions/common/wasm/wasm_vm_test.cc @@ -108,13 +108,13 @@ void pong(Word value) { g_host_functions->pong(convertWordToUint32(value)); } Word random() { return {g_host_functions->random()}; } // pong() with wrong number of arguments. -void bad_pong1() {} +void badPong1() {} // pong() with wrong return type. -Word bad_pong2(Word) { return 2; } +Word badPong2(Word) { return 2; } // pong() with wrong argument type. -double bad_pong3(double) { return 3; } +double badPong3(double) { return 3; } class WasmVmTest : public testing::TestWithParam { public: @@ -195,13 +195,13 @@ TEST_P(WasmVmTest, V8BadHostFunctions) { wasm_vm_->registerCallback("env", "random", &random, CONVERT_FUNCTION_WORD_TO_UINT32(random)); EXPECT_FALSE(wasm_vm_->link("test")); - wasm_vm_->registerCallback("env", "pong", &bad_pong1, CONVERT_FUNCTION_WORD_TO_UINT32(bad_pong1)); + wasm_vm_->registerCallback("env", "pong", &badPong1, CONVERT_FUNCTION_WORD_TO_UINT32(badPong1)); EXPECT_FALSE(wasm_vm_->link("test")); - wasm_vm_->registerCallback("env", "pong", &bad_pong2, CONVERT_FUNCTION_WORD_TO_UINT32(bad_pong2)); + wasm_vm_->registerCallback("env", "pong", &badPong2, CONVERT_FUNCTION_WORD_TO_UINT32(badPong2)); EXPECT_FALSE(wasm_vm_->link("test")); - wasm_vm_->registerCallback("env", "pong", &bad_pong3, CONVERT_FUNCTION_WORD_TO_UINT32(bad_pong3)); + wasm_vm_->registerCallback("env", "pong", &badPong3, CONVERT_FUNCTION_WORD_TO_UINT32(badPong3)); EXPECT_FALSE(wasm_vm_->link("test")); } From 3d0b720a5a2562f76f7e5b84ae98b791461d9d69 Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Tue, 3 Aug 2021 08:56:35 +0900 Subject: [PATCH 3/3] Fix release date. Signed-off-by: Takeshi Yoneda --- bazel/repository_locations.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index 3266c0df5bf5b..6dd8835cf4137 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -992,7 +992,7 @@ REPOSITORY_LOCATIONS_SPEC = dict( "envoy.wasm.runtime.wavm", "envoy.wasm.runtime.wasmtime", ], - release_date = "2021-07-30", + release_date = "2021-08-02", cpe = "N/A", ), proxy_wasm_rust_sdk = dict(