- make IPv6 work again on FreeBSD (Peter van Dijk)
- neglected to properly initialize the socklen of accept of dynlistener ;-(
- make *all* sql in gsqlbackends available for configuration (Martin Klebermass/bert hubert)
- - multiple backende+axfr work again
+ - multiple backends+axfr work again
- axfr backend transaction now only started after first actual
record is in
- improve bindbackend abortTransaction
+ should no longer block the zone
- huge improvement in performance of bind-domain-status
(spotted by Erik Bos)
+ - further alignment fixes (should help on UltraSparc)
+ - AXFR terminated with an EOF is now an error, unless a second SOA
+ was seen
Changes since 2.9.2:
- windows compilation patches
Returns false if there is definitely no SOA for the domain. May throw a DBException
to indicate that the backend is currently unable to supply an answer.
+ WARNING: This function *may* fill out the db attribute of the SOAData, but then again,
+ it may not! If you find a zero in there, you may have been handed a non-live and cached
+ answer, in which case you need to perform a getDomainInfo call!
+
\param domain Domain we want to get the SOA details of
\param sd SOAData which is filled with the SOA details
*/
// d_sock is connected and is about to spit out a packet
int len=getLength();
if(len<0)
- return 0;
+ throw ResolverException("EOF trying to read axfr chunk from remote TCP client");
timeoutReadn((char *)d_buf,len);
d_len=len;
soa.ttl=sd.default_ttl;
soa.domain_id=sd.domain_id;
soa.d_place=DNSResourceRecord::ANSWER;
+
+ if(!sd.db) { // we got a cached answer
+ DomainInfo di;
+ if(!s_P->getBackend()->getDomainInfo(target, di) || !di.backend) {
+ L<<Logger::Error<<"Error determining backend for domain '"<<target<<"' trying to serve an AXFR"<<endl;
+ outpacket->setRcode(RCode::ServFail);
+ sendDelPacket(outpacket,outsock);
+ return 0;
+ }
+ sd.db=di.backend;
+ }
+
}
DLOG(L<<"Issuing list command - opening dedicated database connection"<<endl);
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-// $Id: ueberbackend.cc,v 1.8 2003/01/02 15:43:00 ahu Exp $
+// $Id: ueberbackend.cc,v 1.9 2003/01/03 23:51:54 ahu Exp $
/* (C) Copyright 2002 PowerDNS.COM BV */
#include "utility.hh"
DNSPacket::fillSOAData(d_answer.content,sd);
sd.domain_id=d_answer.domain_id;
sd.ttl=d_answer.ttl;
-
+ sd.db=0;
return true;
}