diff --git a/include/proxy-wasm/wasm.h b/include/proxy-wasm/wasm.h index db3ff7404..5b82d1895 100644 --- a/include/proxy-wasm/wasm.h +++ b/include/proxy-wasm/wasm.h @@ -283,8 +283,8 @@ std::shared_ptr getThreadLocalWasm(std::string_view vm_id); class PluginHandleBase : public std::enable_shared_from_this { public: explicit PluginHandleBase(std::shared_ptr wasm_handle, - std::string_view plugin_key) - : wasm_handle_(wasm_handle), plugin_key_(plugin_key) {} + std::shared_ptr plugin) + : wasm_handle_(wasm_handle), plugin_key_(plugin->key()) {} ~PluginHandleBase() { wasm_handle_->wasm()->startShutdown(plugin_key_); } std::shared_ptr &wasm() { return wasm_handle_->wasm(); } @@ -295,7 +295,7 @@ class PluginHandleBase : public std::enable_shared_from_this { }; using PluginHandleFactory = std::function( - std::shared_ptr base_wasm, std::string_view plugin_key)>; + std::shared_ptr base_wasm, std::shared_ptr plugin)>; // Get an existing ThreadLocal VM matching 'vm_id' or create one using 'base_wavm' by cloning or by // using it it as a template. diff --git a/src/wasm.cc b/src/wasm.cc index 3829a89ef..320e282df 100644 --- a/src/wasm.cc +++ b/src/wasm.cc @@ -562,7 +562,7 @@ std::shared_ptr getOrCreateThreadLocalPlugin( "Failed to configure thread-local Wasm plugin"); return nullptr; } - auto plugin_handle = plugin_factory(wasm_handle, plugin->key()); + auto plugin_handle = plugin_factory(wasm_handle, plugin); local_plugins[key] = plugin_handle; return plugin_handle; }