Permalink
Browse files

Added enum namespace to lua-pdns to prevent magic number usage when r…

…eferring to pdns_recursor return types for pdns.DROP and pdns.PASS
  • Loading branch information...
1 parent 8501bb0 commit 92c0733106d24e39189644ca722e613c343e04ba Zack Allen committed Dec 30, 2013
Showing with 7 additions and 8 deletions.
  1. +2 −2 pdns/lua-pdns.cc
  2. +2 −1 pdns/lua-pdns.hh
  3. +0 −2 pdns/lua-recursor.hh
  4. +3 −3 pdns/pdns_recursor.cc
View
@@ -299,9 +299,9 @@ PowerDNSLua::PowerDNSLua(const std::string& fname)
// 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");
View
@@ -30,7 +30,8 @@ protected: // FIXME?
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);
@@ -13,9 +13,7 @@ public:
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
@@ -563,12 +563,12 @@ void startDoResolve(void *p)
}
}
- 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()) {
@@ -581,7 +581,7 @@ void startDoResolve(void *p)
}
}
- if(res < 0) {
+ if(res == RecursorBehavior::PASS) {
pw.getHeader()->rcode=RCode::ServFail;
// no commit here, because no record
g_stats.servFails++;

0 comments on commit 92c0733

Please sign in to comment.