]> granicus.if.org Git - pdns/commitdiff
dnsdist: allow known exception types to be converted to string
authorCharles-Henri Bruyand <charles-henri.bruyand@open-xchange.com>
Mon, 30 Apr 2018 15:33:30 +0000 (17:33 +0200)
committerCharles-Henri Bruyand <charles-henri.bruyand@open-xchange.com>
Mon, 30 Apr 2018 15:33:30 +0000 (17:33 +0200)
pdns/dnsdist-lua-bindings.cc

index bac46f77f7a7da0bf10d6d2ad47f55ffd1d07e8f..988320621f434d27d5c6f73192d2acda77da3e5b 100644 (file)
@@ -44,6 +44,21 @@ void setupLuaBindings(bool client)
       g_outputBuffer+="\n";
     });
 
+  /* Exceptions */
+  g_lua.registerFunction<string(std::exception_ptr::*)()>("__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);