From f5aff9751c7ecf96510bb2eedf7eae5851bd8f25 Mon Sep 17 00:00:00 2001 From: Charles-Henri Bruyand Date: Mon, 30 Apr 2018 17:33:30 +0200 Subject: [PATCH] dnsdist: allow known exception types to be converted to string --- pdns/dnsdist-lua-bindings.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pdns/dnsdist-lua-bindings.cc b/pdns/dnsdist-lua-bindings.cc index bac46f77f..988320621 100644 --- a/pdns/dnsdist-lua-bindings.cc +++ b/pdns/dnsdist-lua-bindings.cc @@ -44,6 +44,21 @@ void setupLuaBindings(bool client) g_outputBuffer+="\n"; }); + /* Exceptions */ + g_lua.registerFunction("__tostring", [](const std::exception_ptr& eptr) { + try { + if (eptr) { + std::rethrow_exception(eptr); + } + } catch(const std::exception& e) { + return string(e.what()); + } catch(const PDNSException& e) { + return e.reason; + } catch(...) { + return string("Unknown exception"); + } + return string("No exception"); + }); /* ServerPolicy */ g_lua.writeFunction("newServerPolicy", [](string name, policyfunc_t policy) { return ServerPolicy{name, policy, true};}); g_lua.registerMember("name", &ServerPolicy::name); -- 2.49.0