// set syslog codes used by Logger/enum Urgency
pushSyslogSecurityLevelTable(d_lua);
lua_setfield(d_lua, -2, "loglevels");
- lua_pushnumber(d_lua, -1);
+ lua_pushnumber(d_lua, RecursorBehavior::PASS);
lua_setfield(d_lua, -2, "PASS");
- lua_pushnumber(d_lua, -2);
+ lua_pushnumber(d_lua, RecursorBehavior::DROP);
lua_setfield(d_lua, -2, "DROP");
lua_setglobal(d_lua, "pdns");
bool d_variable;
ComboAddress d_local;
};
-
+// this enum creates constants to track the pdns_recursor behavior when returned from the Lua call
+namespace RecursorBehavior { enum returnTypes{PASS=-1,DROP=-2}; };
void pushResourceRecordsTable(lua_State* lua, const vector<DNSResourceRecord>& records);
void popResourceRecordsTable(lua_State *lua, const string &query, vector<DNSResourceRecord>& ret);
void pushSyslogSecurityLevelTable(lua_State *lua);
bool nxdomain(const ComboAddress& remote, const ComboAddress& local, const string& query, const QType& qtype, vector<DNSResourceRecord>& res, int& ret, bool* variable);
bool nodata(const ComboAddress& remote, const ComboAddress& local, const string& query, const QType& qtype, vector<DNSResourceRecord>& res, int& ret, bool* variable);
bool postresolve(const ComboAddress& remote, const ComboAddress& local, const string& query, const QType& qtype, vector<DNSResourceRecord>& res, int& ret, bool* variable);
-
private:
bool passthrough(const string& func, const ComboAddress& remote,const ComboAddress& local, const string& query, const QType& qtype, vector<DNSResourceRecord>& ret, int& res, bool* variable);
};
-
#endif
}
}
- if(res == -2) {
+ if(res == RecursorBehavior::DROP) {
delete dc;
dc=0;
return;
}
- if(tracedQuery || res < 0 || res == RCode::ServFail || pw.getHeader()->rcode == RCode::ServFail)
+ if(tracedQuery || res == RecursorBehavior::PASS || res == RCode::ServFail || pw.getHeader()->rcode == RCode::ServFail)
{
string trace(sr.getTrace());
if(!trace.empty()) {
}
}
- if(res < 0) {
+ if(res == RecursorBehavior::PASS) {
pw.getHeader()->rcode=RCode::ServFail;
// no commit here, because no record
g_stats.servFails++;