From: Miod Vallat Date: Fri, 28 Feb 2025 07:50:00 +0000 (+0100) Subject: Make the return type of every lua lambda explicit. X-Git-Tag: dnsdist-2.0.0-alpha1~43^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3e2f6c84fa6e1e04f3aed06085e61f190e0c0e3;p=thirdparty%2Fpdns.git Make the return type of every lua lambda explicit. --- diff --git a/pdns/lua-record.cc b/pdns/lua-record.cc index ceeb826b4f..305269d916 100644 --- a/pdns/lua-record.cc +++ b/pdns/lua-record.cc @@ -1390,7 +1390,7 @@ static string lua_pickclosest(const iplist_t& ips) return pickclosest(s_lua_record_ctx->bestwho, conv).toString(); } -static string lua_report(string /* event */, boost::optional /* line */) +static void lua_report(string /* event */, boost::optional /* line */) { throw std::runtime_error("Script took too long"); } @@ -1583,30 +1583,38 @@ static std::unordered_map lua_variables{ static void setupLuaRecords(LuaContext& lua) { - lua.writeFunction("latlon", []() { + if (g_luaRecordExecLimit > 0) { + lua.executeCode(boost::str(boost::format("debug.sethook(report, '', %d)") % g_luaRecordExecLimit)); + } + + lua.writeFunction("report", [](string event, boost::optional line) -> void { + lua_report(event, line); + }); + + lua.writeFunction("latlon", []() -> string { return lua_latlon(); }); - lua.writeFunction("latlonloc", []() { + lua.writeFunction("latlonloc", []() -> string { return lua_latlonloc(); }); - lua.writeFunction("closestMagic", []() { + lua.writeFunction("closestMagic", []() -> string { return lua_closestMagic(); }); - lua.writeFunction("latlonMagic", [](){ + lua.writeFunction("latlonMagic", []()-> string { return lua_latlonMagic(); }); - lua.writeFunction("createForward", []() { + lua.writeFunction("createForward", []() -> string { return lua_createForward(); }); - lua.writeFunction("createForward6", []() { + lua.writeFunction("createForward6", []() -> string { return lua_createForward6(); }); - lua.writeFunction("createReverse", [](string format, boost::optional> e){ + lua.writeFunction("createReverse", [](string format, boost::optional> e) -> string { return lua_createReverse(format, e); }); - lua.writeFunction("createReverse6", [](const string &format, boost::optional> excp){ + lua.writeFunction("createReverse6", [](const string &format, boost::optional> excp) -> string { return lua_createReverse6(format, excp); }); @@ -1614,105 +1622,97 @@ static void setupLuaRecords(LuaContext& lua) return lua_filterForward(address, nmg, fallback); }); - lua.writeFunction("ifportup", [](int port, const boost::variant& ips, const boost::optional> options) { + lua.writeFunction("ifportup", [](int port, const boost::variant& ips, const boost::optional> options) -> vector { return lua_ifportup(port, ips, options); }); - lua.writeFunction("ifurlextup", [](const vector >& ipurls, boost::optional options) { + lua.writeFunction("ifurlextup", [](const vector >& ipurls, boost::optional options) -> vector { return lua_ifurlextup(ipurls, options); }); - lua.writeFunction("ifurlup", [](const std::string& url, const boost::variant& ips, boost::optional options) { + lua.writeFunction("ifurlup", [](const std::string& url, const boost::variant& ips, boost::optional options) -> vector { return lua_ifurlup(url, ips, options); }); - lua.writeFunction("pickrandom", [](const iplist_t& ips) { + lua.writeFunction("pickrandom", [](const iplist_t& ips) -> string { return lua_pickrandom(ips); }); - lua.writeFunction("pickselfweighted", [](const std::string& url, const iplist_t& ips, boost::optional options) { + lua.writeFunction("pickselfweighted", [](const std::string& url, const iplist_t& ips, boost::optional options) -> string { return lua_pickselfweighted(url, ips, options); }); - lua.writeFunction("pickrandomsample", [](int n, const iplist_t& ips) { + lua.writeFunction("pickrandomsample", [](int n, const iplist_t& ips) -> vector { return lua_pickrandomsample(n, ips); }); - lua.writeFunction("pickhashed", [](const iplist_t& ips) { + lua.writeFunction("pickhashed", [](const iplist_t& ips) -> string { return lua_pickhashed(ips); }); - lua.writeFunction("pickwrandom", [](std::unordered_map ips) { + lua.writeFunction("pickwrandom", [](std::unordered_map ips) -> string { return lua_pickwrandom(ips); }); - lua.writeFunction("pickwhashed", [](std::unordered_map ips) { + lua.writeFunction("pickwhashed", [](std::unordered_map ips) -> string { return lua_pickwhashed(ips); }); - lua.writeFunction("picknamehashed", [](std::unordered_map ips) { + lua.writeFunction("picknamehashed", [](std::unordered_map ips) -> string { return lua_picknamehashed(ips); }); - lua.writeFunction("pickchashed", [](const std::unordered_map& ips) { + lua.writeFunction("pickchashed", [](const std::unordered_map& ips) -> string { return lua_pickchashed(ips); }); - lua.writeFunction("pickclosest", [](const iplist_t& ips) { + lua.writeFunction("pickclosest", [](const iplist_t& ips) -> string { return lua_pickclosest(ips); }); - if (g_luaRecordExecLimit > 0) { - lua.executeCode(boost::str(boost::format("debug.sethook(report, '', %d)") % g_luaRecordExecLimit)); - } - - lua.writeFunction("report", [](string event, boost::optional line){ - return lua_report(event, line); - }); - - lua.writeFunction("geoiplookup", [](const string &ip, const GeoIPInterface::GeoIPQueryAttribute attr) { + lua.writeFunction("geoiplookup", [](const string &ip, const GeoIPInterface::GeoIPQueryAttribute attr) -> string { return lua_geoiplookup(ip, attr); }); - lua.writeVariable("GeoIPQueryAttribute", lua_variables); - - lua.writeFunction("asnum", [](const combovar_t& asns) { + lua.writeFunction("asnum", [](const combovar_t& asns) -> bool { return lua_asnum(asns); }); - lua.writeFunction("continent", [](const combovar_t& continent) { + lua.writeFunction("continent", [](const combovar_t& continent) -> bool { return lua_continent(continent); }); - lua.writeFunction("continentCode", []() { + lua.writeFunction("continentCode", []() -> string { return lua_continentCode(); }); - lua.writeFunction("country", [](const combovar_t& var) { + lua.writeFunction("country", [](const combovar_t& var) -> bool { return lua_country(var); }); - lua.writeFunction("countryCode", []() { + lua.writeFunction("countryCode", []() -> string { return lua_countryCode(); }); - lua.writeFunction("region", [](const combovar_t& var) { + lua.writeFunction("region", [](const combovar_t& var) -> bool { return lua_region(var); }); - lua.writeFunction("regionCode", []() { + lua.writeFunction("regionCode", []() -> string { return lua_regionCode(); }); - lua.writeFunction("netmask", [](const iplist_t& ips) { + lua.writeFunction("netmask", [](const iplist_t& ips) -> bool { return lua_netmask(ips); }); - lua.writeFunction("view", [](const vector > > >& in) { + lua.writeFunction("view", [](const vector > > >& in) -> string { return lua_view(in); }); - lua.writeFunction("all", [](const vector< pair >& ips) { + lua.writeFunction("all", [](const vector< pair >& ips) -> vector { return lua_all(ips); }); - lua.writeFunction("dblookup", [](const string& record, uint16_t qtype) { + lua.writeFunction("dblookup", [](const string& record, uint16_t qtype) -> vector { return lua_dblookup(record, qtype); }); - lua.writeFunction("include", [&lua](string record) { + lua.writeFunction("include", [&lua](string record) -> void { lua_include(lua, record); }); + + lua.writeVariable("GeoIPQueryAttribute", lua_variables); } std::vector> luaSynth(const std::string& code, const DNSName& query, const DNSZoneRecord& zone_record, const DNSName& zone, const DNSPacket& dnsp, uint16_t qtype, unique_ptr& LUA)