From: Charles-Henri Bruyand Date: Mon, 30 Apr 2018 15:33:30 +0000 (+0200) Subject: dnsdist: allow known exception types to be converted to string X-Git-Tag: dnsdist-1.3.1~66^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f5aff9751c7ecf96510bb2eedf7eae5851bd8f25;p=pdns dnsdist: allow known exception types to be converted to string --- 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);