aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/transports/dlltransport.cpp
diff options
context:
space:
mode:
authorDmytro Ivanov <[email protected]>2025-04-23 10:54:22 +0200
committerGitHub Enterprise <[email protected]>2025-04-23 10:54:22 +0200
commit199553c86444dcd9c4cff91165938dbd9a5b4bbb (patch)
tree017231616e164717b112dae1faab05f1d8573f10 /src/zenhttp/transports/dlltransport.cpp
parentmake sure to call MakeSafeAbsolutePathÍnPlace where appropriate (#363) (diff)
downloadzen-199553c86444dcd9c4cff91165938dbd9a5b4bbb.tar.xz
zen-199553c86444dcd9c4cff91165938dbd9a5b4bbb.zip
Make plugin loading errors non fatal (#364)
make plugin loading errors non fatal
Diffstat (limited to 'src/zenhttp/transports/dlltransport.cpp')
-rw-r--r--src/zenhttp/transports/dlltransport.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/zenhttp/transports/dlltransport.cpp b/src/zenhttp/transports/dlltransport.cpp
index dd05f6f0c..fb3dd23b5 100644
--- a/src/zenhttp/transports/dlltransport.cpp
+++ b/src/zenhttp/transports/dlltransport.cpp
@@ -55,7 +55,7 @@ public:
virtual const char* GetDebugName() override;
virtual bool IsAvailable() override;
- virtual void LoadDll(std::string_view Name) override;
+ virtual bool LoadDll(std::string_view Name) override;
virtual void ConfigureDll(std::string_view Name, const char* OptionTag, const char* OptionValue) override;
private:
@@ -172,7 +172,7 @@ DllTransportPluginImpl::ConfigureDll(std::string_view Name, const char* OptionTa
}
}
-void
+bool
DllTransportPluginImpl::LoadDll(std::string_view Name)
{
RwLock::ExclusiveLockScope _(m_Lock);
@@ -190,9 +190,8 @@ DllTransportPluginImpl::LoadDll(std::string_view Name)
if (!DllHandle)
{
- std::error_code Ec = MakeErrorCodeFromLastError();
-
- throw std::system_error(Ec, fmt::format("failed to load transport DLL from '{}'", DllPath));
+ ZEN_WARN("Failed to load transport DLL from '{}' due to '{}'", DllPath, GetLastErrorAsString())
+ return false;
}
PfnGetTransportPluginVersion GetVersion = (PfnGetTransportPluginVersion)GetProcAddress(DllHandle, "GetTransportPluginVersion");
@@ -216,17 +215,18 @@ DllTransportPluginImpl::LoadDll(std::string_view Name)
if (GetVersion && !bValidApiVersion)
{
- throw std::system_error(
- Ec,
- fmt::format("invalid API version '{}' detected in transport DLL loaded from '{}', supported API version '{}'",
- APIVersion,
- DllPath,
- kTransportApiVersion));
+ ZEN_WARN("Failed to load transport DLL from '{}' due to invalid API version {}, supported API version is {}",
+ DllPath,
+ APIVersion,
+ kTransportApiVersion)
}
else
{
- throw std::system_error(Ec, fmt::format("API mismatch detected in transport DLL loaded from '{}'", DllPath));
+ ZEN_WARN("Failed to load transport DLL from '{}' due to not finding GetTransportPluginVersion or CreateTransportPlugin",
+ DllPath)
}
+
+ return false;
}
LoadedDll NewDll;
@@ -238,6 +238,7 @@ DllTransportPluginImpl::LoadDll(std::string_view Name)
NewDll.Plugin = CreatePlugin(NewDll.Logger);
m_Transports.emplace_back(std::move(NewDll));
+ return true;
}
DllTransportPlugin*