From: Bert Hubert Date: Mon, 10 Jan 2011 13:42:59 +0000 (+0000) Subject: add multiple master support to gsqlbackends - forward port from 2.9.22.x X-Git-Tag: auth-3.0~390 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d28bfa1f2fa5cb41262a29024bd530badf0f357;p=pdns add multiple master support to gsqlbackends - forward port from 2.9.22.x git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1857 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index 54520c633..b0c9d0435 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -67,8 +67,21 @@ bool GSQLBackend::isMaster(const string &domain, const string &ip) if(d_result.empty()) return 0; - - return !strcmp(ip.c_str(),d_result[0][0].c_str()); + + // we can have multiple masters separated by commas + vector masters; + stringtok(masters, d_result[0][0], " ,\t"); + for(vector::const_iterator iter=masters.begin(); iter != masters.end(); ++iter) { + // we can also have masters with a port specified (which we ignore here) + ServiceTuple st; + parseService(*iter, st); + if (!strcmp(ip.c_str(), st.host.c_str())) { + return 1; + } + } + + // if no masters matched then this is not a master + return 0; } bool GSQLBackend::getDomainInfo(const string &domain, DomainInfo &di)