From a2dfc9ea78614a9eef514a612117e507d70d4664 Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Thu, 30 Nov 2017 01:53:27 +0100 Subject: [PATCH] auth: one query and a huge amount of code down the drain --- modules/bindbackend/bindbackend2.cc | 16 ------- modules/bindbackend/bindbackend2.hh | 1 - modules/gmysqlbackend/gmysqlbackend.cc | 2 - modules/godbcbackend/godbcbackend.cc | 2 - modules/goraclebackend/goraclebackend.cc | 2 - modules/gpgsqlbackend/gpgsqlbackend.cc | 2 - modules/gsqlite3backend/gsqlite3backend.cc | 2 - modules/luabackend/luabackend.hh | 1 - modules/luabackend/slave.cc | 35 --------------- modules/opendbxbackend/odbxbackend.cc | 36 --------------- modules/opendbxbackend/odbxbackend.hh | 1 - modules/oraclebackend/oraclebackend.cc | 45 ------------------- modules/oraclebackend/oraclebackend.hh | 2 - modules/remotebackend/httpconnector.cc | 3 -- modules/remotebackend/remotebackend.cc | 17 ------- modules/remotebackend/remotebackend.hh | 1 - modules/remotebackend/test-remotebackend.cc | 6 --- pdns/backends/gsql/gsqlbackend.cc | 35 --------------- pdns/backends/gsql/gsqlbackend.hh | 1 - pdns/dnsbackend.hh | 18 +++++--- pdns/packethandler.cc | 2 +- .../backends/godbc_sqlite3-master | 1 - 22 files changed, 13 insertions(+), 218 deletions(-) diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index b262a0307..28a5b4295 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -1215,22 +1215,6 @@ bool Bind2Backend::handle::get_list(DNSResourceRecord &r) return false; } -bool Bind2Backend::isMaster(const DNSName& name, const string &ip) -{ - BB2DomainInfo bbd; - if(!safeGetBBDomainInfo(name, &bbd)) - return false; - - if(bbd.d_kind != DomainInfo::Slave) - return false; - - for(vector::const_iterator iter = bbd.d_masters.begin(); iter != bbd.d_masters.end(); ++iter) - if(*iter==ip) - return true; - - return false; -} - bool Bind2Backend::superMasterBackend(const string &ip, const DNSName& domain, const vector&nsset, string *nameserver, string *account, DNSBackend **db) { // Check whether we have a configfile available. diff --git a/modules/bindbackend/bindbackend2.hh b/modules/bindbackend/bindbackend2.hh index 1f3b5cbd4..c85003eef 100644 --- a/modules/bindbackend/bindbackend2.hh +++ b/modules/bindbackend/bindbackend2.hh @@ -239,7 +239,6 @@ public: void insertRecord(BB2DomainInfo& bbd, const DNSName &qname, const QType &qtype, const string &content, int ttl, const std::string& hashed=string(), bool *auth=0); void rediscover(string *status=0) override; - bool isMaster(const DNSName &name, const string &ip) override; // for supermaster support bool superMasterBackend(const string &ip, const DNSName &domain, const vector&nsset, string *nameserver, string *account, DNSBackend **db) override; diff --git a/modules/gmysqlbackend/gmysqlbackend.cc b/modules/gmysqlbackend/gmysqlbackend.cc index ff75d94ff..1d0bed64d 100644 --- a/modules/gmysqlbackend/gmysqlbackend.cc +++ b/modules/gmysqlbackend/gmysqlbackend.cc @@ -94,8 +94,6 @@ public: declare(suffix, "remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id=? and type is null"); declare(suffix, "delete-empty-non-terminal-query", "delete empty non-terminal from zone", "delete from records where domain_id=? and name=? and type is null"); - declare(suffix,"master-zone-query","Data", "select master from domains where name=? and type='SLAVE'"); - declare(suffix,"info-zone-query","","select id,name,master,last_check,notified_serial,type,account from domains where name=?"); declare(suffix,"info-all-slaves-query","","select id,name,master,last_check from domains where type='SLAVE'"); diff --git a/modules/godbcbackend/godbcbackend.cc b/modules/godbcbackend/godbcbackend.cc index b1dff9baf..9db1f5ff7 100644 --- a/modules/godbcbackend/godbcbackend.cc +++ b/modules/godbcbackend/godbcbackend.cc @@ -81,8 +81,6 @@ public: declare(suffix, "remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id=? and type is null"); declare(suffix, "delete-empty-non-terminal-query", "delete empty non-terminal from zone", "delete from records where domain_id=? and name=? and type is null"); - declare(suffix,"master-zone-query","Data", "select master from domains where name=? and type='SLAVE'"); - declare(suffix,"info-zone-query","","select id,name,master,last_check,notified_serial,type,account from domains where name=?"); declare(suffix,"info-all-slaves-query","","select id,name,master,last_check from domains where type='SLAVE'"); diff --git a/modules/goraclebackend/goraclebackend.cc b/modules/goraclebackend/goraclebackend.cc index a49cea32b..6a5d3e756 100644 --- a/modules/goraclebackend/goraclebackend.cc +++ b/modules/goraclebackend/goraclebackend.cc @@ -100,8 +100,6 @@ public: declare(suffix, "remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id=:domain_id and type is null"); declare(suffix, "delete-empty-non-terminal-query", "delete empty non-terminal from zone", "delete from records where domain_id=:domain_id and name=:qname and type is null"); - declare(suffix, "master-zone-query", "Data", "select master from domains where name=:domain and type='SLAVE'"); - declare(suffix, "info-zone-query", "","select id,name,master,last_check,notified_serial,type,account from domains where name=:domain"); declare(suffix, "info-all-slaves-query", "","select id,name,master,last_check from domains where type='SLAVE'"); diff --git a/modules/gpgsqlbackend/gpgsqlbackend.cc b/modules/gpgsqlbackend/gpgsqlbackend.cc index 5396878b9..ef8d05e5f 100644 --- a/modules/gpgsqlbackend/gpgsqlbackend.cc +++ b/modules/gpgsqlbackend/gpgsqlbackend.cc @@ -101,8 +101,6 @@ public: declare(suffix,"remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id=$1 and type is null"); declare(suffix,"delete-empty-non-terminal-query", "delete empty non-terminal from zone", "delete from records where domain_id=$1 and name=$2 and type is null"); - declare(suffix,"master-zone-query","Data", "select master from domains where name=$1 and type='SLAVE'"); - declare(suffix,"info-zone-query","","select id,name,master,last_check,notified_serial,type,account from domains where name=$1"); declare(suffix,"info-all-slaves-query","","select id,name,master,last_check from domains where type='SLAVE'"); diff --git a/modules/gsqlite3backend/gsqlite3backend.cc b/modules/gsqlite3backend/gsqlite3backend.cc index 4051f9184..9bda9572f 100644 --- a/modules/gsqlite3backend/gsqlite3backend.cc +++ b/modules/gsqlite3backend/gsqlite3backend.cc @@ -92,8 +92,6 @@ public: declare(suffix, "remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id=:domain_id and type is null"); declare(suffix, "delete-empty-non-terminal-query", "delete empty non-terminal from zone", "delete from records where domain_id=:domain_id and name=:qname and type is null"); - - declare(suffix, "master-zone-query", "Data", "select master from domains where name=:domain and type='SLAVE'"); declare(suffix, "info-zone-query", "","select id,name,master,last_check,notified_serial,type,account from domains where name=:domain"); diff --git a/modules/luabackend/luabackend.hh b/modules/luabackend/luabackend.hh index 6d19d084a..d85cf91ca 100644 --- a/modules/luabackend/luabackend.hh +++ b/modules/luabackend/luabackend.hh @@ -69,7 +69,6 @@ public: // SLAVE BACKEND bool getDomainInfo(const DNSName& domain, DomainInfo &di, bool getSerial=true) override; - bool isMaster(const DNSName& name, const string &ip) override; void getUnfreshSlaveInfos(vector* domains) override; void setFresh(uint32_t id) override; diff --git a/modules/luabackend/slave.cc b/modules/luabackend/slave.cc index 22d6aa672..1d61fff00 100644 --- a/modules/luabackend/slave.cc +++ b/modules/luabackend/slave.cc @@ -36,7 +36,6 @@ virtual bool feedRecord(const DNSResourceRecord &rr, DNSName &ordername); virtual bool getDomainInfo(const string &domain, DomainInfo &di); - virtual bool isMaster(const string &name, const string &ip); virtual void getUnfreshSlaveInfos(vector* domains); virtual void setFresh(uint32_t id); */ @@ -224,40 +223,6 @@ void LUABackend::getUnfreshSlaveInfos(vector* domains) { } -bool LUABackend::isMaster(const DNSName& domain, const string &ip) { - - if (f_lua_ismaster == 0) - return false; - - if (logging) - g_log << Logger::Error << backend_name << "(isMaster) BEGIN" << endl; - - lua_rawgeti(lua, LUA_REGISTRYINDEX, f_lua_ismaster); - - lua_pushstring(lua, domain.toString().c_str()); - lua_pushstring(lua, ip.c_str()); - - if(lua_pcall(lua, 2, 1, f_lua_exec_error) != 0) { - string e = backend_name + lua_tostring(lua, -1); - lua_pop(lua, 1); - - throw runtime_error(e); - } - - size_t returnedwhat = lua_type(lua, -1); - bool ok = false; - - if (returnedwhat == LUA_TBOOLEAN) - ok = lua_toboolean(lua, -1); - - lua_pop(lua, 1); - - if (logging) - g_log << Logger::Info << backend_name << "(isMaster) END" << endl; - - return ok; -} - bool LUABackend::getDomainInfo(const DNSName&domain, DomainInfo &di, bool getSerial) { if (f_lua_getdomaininfo == 0) return false; diff --git a/modules/opendbxbackend/odbxbackend.cc b/modules/opendbxbackend/odbxbackend.cc index 7b23b47b6..8187fa58a 100644 --- a/modules/opendbxbackend/odbxbackend.cc +++ b/modules/opendbxbackend/odbxbackend.cc @@ -496,42 +496,6 @@ void OdbxBackend::setNotified( uint32_t domain_id, uint32_t serial ) -bool OdbxBackend::isMaster( const DNSName& domain, const string& ip ) -{ - try - { - DLOG( g_log.log( m_myname + " isMaster()", Logger::Debug ) ); - - string stmt = getArg( "sql-master" ); - string& stmtref = strbind( ":name", escape( domain.makeLowerCase().toStringRootDot(), READ ), stmt ); - - if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return false; } - if( !getRecord( READ ) ) { return false; } - - do - { - if( odbx_field_value( m_result, 0 ) != NULL ) - { - if( !strcmp( odbx_field_value( m_result, 0 ), ip.c_str() ) ) - { - while( getRecord( READ ) ); - return true; - } - } - } - while( getRecord( READ ) ); - } - catch ( std::exception& e ) - { - g_log.log( m_myname + " isMaster: Caught STL exception - " + e.what(), Logger::Error ); - return false; - } - - return false; -} - - - void OdbxBackend::getUnfreshSlaveInfos( vector* unfresh ) { try diff --git a/modules/opendbxbackend/odbxbackend.hh b/modules/opendbxbackend/odbxbackend.hh index 08d1c44c4..8b8a67692 100644 --- a/modules/opendbxbackend/odbxbackend.hh +++ b/modules/opendbxbackend/odbxbackend.hh @@ -85,7 +85,6 @@ public: bool commitTransaction() override; bool abortTransaction() override; - bool isMaster( const DNSName& domain, const string& ip ) override; bool getDomainInfo( const DNSName& domain, DomainInfo& di, bool getSerial=true ) override; bool feedRecord( const DNSResourceRecord& rr, const DNSName& ordername ) override; bool createSlaveDomain( const string& ip, const DNSName& domain, const string &nameserver, const string& account ) override; diff --git a/modules/oraclebackend/oraclebackend.cc b/modules/oraclebackend/oraclebackend.cc index fd4e8d5e0..98ca2b16a 100644 --- a/modules/oraclebackend/oraclebackend.cc +++ b/modules/oraclebackend/oraclebackend.cc @@ -125,12 +125,6 @@ static const char *zoneMastersQueryDefaultSQL = "FROM Zonemasters " "WHERE zone_id = :zoneid"; -static const char *isZoneMasterQueryKey = "PDNS_Is_Zone_Master_Query"; -static const char *isZoneMasterQueryDefaultSQL = - "SELECT zm.master " - "FROM Zones z JOIN Zonemasters zm ON z.id = zm.zone_id " - "WHERE z.name = lower(:name) AND zm.master = :master"; - static const char *deleteZoneQueryKey = "PDNS_Delete_Zone_Query"; static const char *deleteZoneQueryDefaultSQL = "DELETE FROM Records WHERE zone_id = :zoneid"; @@ -338,7 +332,6 @@ OracleBackend::OracleBackend (const string &suffix, OCIEnv *envh, zoneInfoQuerySQL = getArg("zone-info-query"); alsoNotifyQuerySQL = getArg("also-notify-query"); zoneMastersQuerySQL = getArg("zone-masters-query"); - isZoneMasterQuerySQL = getArg("is-zone-master-query"); deleteZoneQuerySQL = getArg("delete-zone-query"); zoneSetLastCheckQuerySQL = getArg("zone-set-last-check-query"); insertRecordQuerySQL = getArg("insert-record-query"); @@ -607,43 +600,6 @@ OracleBackend::getDomainMasters (const DNSName& domain, int zoneId) return masters; } -bool -OracleBackend::isMaster (const DNSName& domain, const string &master) -{ - sword rc; - OCIStmt *stmt; - - openMasterConnection(); - - stmt = prepare_query(masterSvcCtx, isZoneMasterQuerySQL, isZoneMasterQueryKey); - - DNSName_to_cbuf(mQueryZone, domain, sizeof(mQueryZone)); - string_to_cbuf(mQueryName, master, sizeof(mQueryName)); - - char res_master[512]; - sb2 res_master_ind; - - bind_str_failokay(stmt, ":nsname", myServerName, sizeof(myServerName)); - bind_str(stmt, ":name", mQueryZone, sizeof(mQueryZone)); - bind_str(stmt, ":master", mQueryName, sizeof(mQueryName)); - define_output_str(stmt, 1, &res_master_ind, res_master, sizeof(res_master)); - - rc = OCIStmtExecute(masterSvcCtx, stmt, oraerr, 1, 0, NULL, NULL, OCI_DEFAULT); - - if (rc == OCI_ERROR) { - throw OracleException("Oracle isMaster", oraerr); - } - - release_query(stmt, isZoneMasterQueryKey); - - if (rc != OCI_NO_DATA) { - check_indicator(res_master_ind, false); - return true; - } - - return false; -} - bool OracleBackend::getDomainInfo (const DNSName& domain, DomainInfo &di) { @@ -2238,7 +2194,6 @@ OracleFactory () : BackendFactory("oracle") { declare(suffix, "zone-info-query", "", zoneInfoQueryDefaultSQL); declare(suffix, "also-notify-query", "", alsoNotifyQueryDefaultSQL); declare(suffix, "zone-masters-query", "", zoneMastersQueryDefaultSQL); - declare(suffix, "is-zone-master-query", "", isZoneMasterQueryDefaultSQL); declare(suffix, "delete-zone-query", "", deleteZoneQueryDefaultSQL); declare(suffix, "zone-set-last-check-query", "", zoneSetLastCheckQueryDefaultSQL); declare(suffix, "zone-set-notified-serial-query", "", zoneSetNotifiedSerialQueryDefaultSQL); diff --git a/modules/oraclebackend/oraclebackend.hh b/modules/oraclebackend/oraclebackend.hh index c141a93ad..c846897c1 100644 --- a/modules/oraclebackend/oraclebackend.hh +++ b/modules/oraclebackend/oraclebackend.hh @@ -76,7 +76,6 @@ public: DNSName& after) override; bool get(DNSResourceRecord &rr) override; vector getDomainMasters(const DNSName& domain, int zoneId) override; - bool isMaster(const DNSName& domain, const string &master) override; bool getDomainInfo(const DNSName& domain, DomainInfo &di) override; void alsoNotifies(const DNSName& domain, set *addrs) override; void getUnfreshSlaveInfos(vector* domains) override; @@ -127,7 +126,6 @@ private: string zoneInfoQuerySQL; string alsoNotifyQuerySQL; string zoneMastersQuerySQL; - string isZoneMasterQuerySQL; string deleteZoneQuerySQL; string zoneSetLastCheckQuerySQL; diff --git a/modules/remotebackend/httpconnector.cc b/modules/remotebackend/httpconnector.cc index 2f973bedf..b20803db9 100644 --- a/modules/remotebackend/httpconnector.cc +++ b/modules/remotebackend/httpconnector.cc @@ -134,9 +134,6 @@ void HTTPConnector::restful_requestbuilder(const std::string &method, const Json req.POST()["content"] = param["content"].string_value(); req.preparePost(); verb = "PUT"; - } else if (method == "isMaster") { - addUrlComponent(parameters, "ip", ss); - verb = "GET"; } else if (method == "superMasterBackend") { std::stringstream ss2; addUrlComponent(parameters, "ip", ss); diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index d8f8fdce8..31d4e80d3 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -609,23 +609,6 @@ void RemoteBackend::setNotified(uint32_t id, uint32_t serial) { } } -bool RemoteBackend::isMaster(const DNSName& name, const string &ip) -{ - Json query = Json::object{ - { "method", "isMaster" }, - { "parameters", Json::object { - { "name", name.toString() }, - { "ip", ip } - }} - }; - - Json answer; - if (this->send(query) == false || this->recv(answer) == false) - return false; - - return true; -} - bool RemoteBackend::superMasterBackend(const string &ip, const DNSName& domain, const vector&nsset, string* nameserver, string *account, DNSBackend **ddb) { Json::array rrset; diff --git a/modules/remotebackend/remotebackend.hh b/modules/remotebackend/remotebackend.hh index 2d0d1b782..31805947c 100644 --- a/modules/remotebackend/remotebackend.hh +++ b/modules/remotebackend/remotebackend.hh @@ -170,7 +170,6 @@ class RemoteBackend : public DNSBackend bool getDomainInfo(const DNSName& domain, DomainInfo& di, bool getSerial=true ) override; void setNotified(uint32_t id, uint32_t serial) override; bool doesDNSSEC() override; - bool isMaster(const DNSName& name, const string &ip) override; bool superMasterBackend(const string &ip, const DNSName& domain, const vector&nsset, string *nameserver, string *account, DNSBackend **ddb) override; bool createSlaveDomain(const string &ip, const DNSName& domain, const string& nameserver, const string &account) override; bool replaceRRSet(uint32_t domain_id, const DNSName& qname, const QType& qt, const vector& rrset) override; diff --git a/modules/remotebackend/test-remotebackend.cc b/modules/remotebackend/test-remotebackend.cc index aed51ff45..9c65bb3b8 100644 --- a/modules/remotebackend/test-remotebackend.cc +++ b/modules/remotebackend/test-remotebackend.cc @@ -229,12 +229,6 @@ BOOST_AUTO_TEST_CASE(test_method_getAllDomains) { BOOST_CHECK_EQUAL(di.backend, be); } -BOOST_AUTO_TEST_CASE(test_method_isMaster) { - BOOST_TEST_MESSAGE("Testing isMaster method"); - BOOST_CHECK(be->isMaster(DNSName("ns1.unit.test."), "10.0.0.1")); - BOOST_CHECK(!be->isMaster(DNSName("ns2.unit.test."), "10.0.0.2")); -} - BOOST_AUTO_TEST_CASE(test_method_superMasterBackend) { DNSResourceRecord rr; std::vector nsset; diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index 4dbc96970..66ecb13b5 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -61,7 +61,6 @@ GSQLBackend::GSQLBackend(const string &mode, const string &suffix) d_listQuery=getArg("list-query"); d_listSubZoneQuery=getArg("list-subzone-query"); - d_MasterOfDomainsZoneQuery=getArg("master-zone-query"); d_InfoOfDomainsZoneQuery=getArg("info-zone-query"); d_InfoOfAllSlaveDomainsQuery=getArg("info-all-slaves-query"); d_SuperMasterInfoQuery=getArg("supermaster-query"); @@ -130,7 +129,6 @@ GSQLBackend::GSQLBackend(const string &mode, const string &suffix) d_ANYIdQuery_stmt = NULL; d_listQuery_stmt = NULL; d_listSubZoneQuery_stmt = NULL; - d_MasterOfDomainsZoneQuery_stmt = NULL; d_InfoOfDomainsZoneQuery_stmt = NULL; d_InfoOfAllSlaveDomainsQuery_stmt = NULL; d_SuperMasterInfoQuery_stmt = NULL; @@ -216,39 +214,6 @@ void GSQLBackend::setFresh(uint32_t domain_id) } } -bool GSQLBackend::isMaster(const DNSName &domain, const string &ip) -{ - try { - reconnectIfNeeded(); - - d_MasterOfDomainsZoneQuery_stmt-> - bind("domain", domain)-> - execute()-> - getResult(d_result)-> - reset(); - } - catch (SSqlException &e) { - throw PDNSException("GSQLBackend unable to retrieve list of master domains: "+e.txtReason()); - } - - if(!d_result.empty()) { - ASSERT_ROW_COLUMNS("master-zone-query", d_result[0], 1); - - // we can have multiple masters separated by commas - vector masters; - stringtok(masters, d_result[0][0], " ,\t"); - - for(const auto& master: masters) { - const ComboAddress caMaster(master); - if(ip == caMaster.toString()) - return true; - } - } - - // no matching master - return false; -} - bool GSQLBackend::setMaster(const DNSName &domain, const string &ip) { try { diff --git a/pdns/backends/gsql/gsqlbackend.hh b/pdns/backends/gsql/gsqlbackend.hh index f1ce75e24..6d4de0360 100644 --- a/pdns/backends/gsql/gsqlbackend.hh +++ b/pdns/backends/gsql/gsqlbackend.hh @@ -178,7 +178,6 @@ public: bool list(const DNSName &target, int domain_id, bool include_disabled=false) override; bool get(DNSResourceRecord &r) override; void getAllDomains(vector *domains, bool include_disabled=false) override; - bool isMaster(const DNSName &domain, const string &ip) override; void alsoNotifies(const DNSName &domain, set *ips) override; bool startTransaction(const DNSName &domain, int domain_id=-1) override; bool commitTransaction() override; diff --git a/pdns/dnsbackend.hh b/pdns/dnsbackend.hh index 2d0d178b3..5ea01a66f 100644 --- a/pdns/dnsbackend.hh +++ b/pdns/dnsbackend.hh @@ -42,6 +42,7 @@ class DNSPacket; #include "comment.hh" #include "dnsname.hh" #include "dnsrecords.hh" +#include "iputils.hh" class DNSBackend; struct DomainInfo @@ -51,7 +52,7 @@ struct DomainInfo DNSName zone; time_t last_check; string account; - vector masters; + vector masters; // FIXME use ComboAddress DNSBackend *backend; uint32_t id; @@ -86,6 +87,16 @@ struct DomainInfo return DomainInfo::Native; } + const bool isMaster(const ComboAddress& ip) + { + for( const auto& master: masters) { + const ComboAddress caMaster(master); + if(ip == caMaster) + return true; + } + return false; + } + }; struct TSIGKey { @@ -236,11 +247,6 @@ public: } //! returns true if master ip is master for domain name. - virtual bool isMaster(const DNSName &name, const string &ip) - { - return false; - } - //! starts the transaction for updating domain qname (FIXME: what is id?) virtual bool startTransaction(const DNSName &qname, int id=-1) { diff --git a/pdns/packethandler.cc b/pdns/packethandler.cc index 7b0d182ca..fdf5b8bcc 100644 --- a/pdns/packethandler.cc +++ b/pdns/packethandler.cc @@ -850,7 +850,7 @@ int PacketHandler::processNotify(DNSPacket *p) g_log<qdomain<<" from "<getRemote()<<" but we are master, rejecting"<isMaster(p->qdomain, p->getRemote().toString())) { + else if(!di.isMaster(p->getRemote())) { g_log<qdomain<<" from "<getRemote()<<" which is not a master"<