- removed vestigal receiver-threads setting
- ldapbackend needs to include utility.hh (Remco Post)
- pdns_control could sometimes leave files behind in /tmp (dG)
- - ldapbackend updates
-
+ - ldapbackend updates
+ - TCP incoming AXFR fixes for Solaris and other big endian systems
+ (Willem de Groot helped debug)
+ - bogus error message about unparseable packets (Mark Bergsma)
+ - solved potential crash in recursor (Dan Faerch delivered coredump)
+ - when started via a path, pdns_server could not always find itself (Maurice Nonnekes)
+ - silly wuh debugging output in zone2sql/bindbackend (Ivo van der Wijk)
+ - pdns_recursor lived in the 'bin' and not the 'sbin' directory (Norbert Sendetzky)
+ - chatter from master/slave backend is not 'Error'-worthy (Willem)
+
Changes since 2.9.5:
- implemented isMaster in bindbackend (we now react to notifies)
- added zoneId to mboxfw stuff - massive speedup
sysconf_DATA = pdns.conf-dist
if RECURSOR
-bin_PROGRAMS = pdns_control pdns_recursor
+sbin_PROGRAMS = pdns_server pdns_recursor
else
-bin_PROGRAMS = pdns_control
+sbin_PROGRAMS = pdns_server
endif
-sbin_PROGRAMS = pdns_server
+bin_PROGRAMS = pdns_control
EXTRA_PROGRAMS=pdns_recursor pdns_control
backends/bind/bindparser.cc backends/bind/bindlexer.c \
backends/bind/huffman.cc backends/gsql/gsqlbackend.cc \
backends/gsql/gsqlbackend.hh backends/gsql/ssql.hh \
-sillyrecords.cc
+sillyrecords.cc backends/bind/bindbackend.cc
#
pdns_server_LDFLAGS= @moduleobjects@ @modulelibs@ @DYNLINKFLAGS@ @LIBDL@ @THREADFLAGS@
INCLUDES=-I../..
-noinst_LTLIBRARIES = libbindbackend.la
+noinst_LTLIBRARIES = libbindbackend.la libbind2backend.la
-libbindbackend_la_SOURCES=bindbackend2.cc bindbackend2.hh bindparser.yy \
+libbindbackend_la_SOURCES=bindbackend.cc bindbackend.hh bindparser.yy \
+bindlexer.l zoneparser2.cc ../../misc.cc huffman.cc huffman.hh zoneparser.hh \
+bindparser.hh ../../unix_utility.cc
+
+
+libbind2backend_la_SOURCES=bindbackend2.cc bindbackend2.hh bindparser.yy \
bindlexer.l zoneparser2.cc ../../misc.cc huffman.cc huffman.hh zoneparser.hh \
bindparser.hh ../../unix_utility.cc
if(cmdomains.empty()) {
if(d_masterschanged)
- L<<Logger::Error<<"No master domains need notifications"<<endl;
+ L<<Logger::Warning<<"No master domains need notifications"<<endl;
d_masterschanged=false;
}
else {
if(sdomains.empty())
{
if(d_slaveschanged)
- L<<Logger::Error<<"All slave domains are fresh"<<endl;
+ L<<Logger::Warning<<"All slave domains are fresh"<<endl;
d_slaveschanged=false;
return;
}
else
- L<<Logger::Error<<sdomains.size()<<" slave domain"<<(sdomains.size()>1 ? "s" : "")<<" need"<<
+ L<<Logger::Warning<<sdomains.size()<<" slave domain"<<(sdomains.size()>1 ? "s" : "")<<" need"<<
(sdomains.size()>1 ? "" : "s")<<
" checking"<<endl;
i->backend->setFresh(i->id);
}
else {
- L<<Logger::Error<<"Domain "<<i->zone<<" is stale, master serial "<<theirserial<<", our serial "<<i->serial<<endl;
+ L<<Logger::Warning<<"Domain "<<i->zone<<" is stale, master serial "<<theirserial<<", our serial "<<i->serial<<endl;
addSuckRequest(i->zone,i->master);
}
}
if(item[0]=='"')
bpos=1;
- cout<<"wuh: '"<<item[epos-1]<<"'"<<endl;
if(item[epos-1]=='"')
epos-=1;
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-// $Id: receiver.cc,v 1.7 2003/03/04 18:33:39 ahu Exp $
+// $Id: receiver.cc,v 1.8 2003/03/06 16:59:11 ahu Exp $
#include <cstdio>
#include <signal.h>
#include <cstring>
dup2(d_fd2[1], outfd);
close(d_fd2[1]);
}
- if(execv(argv[0], newargv)<0) {
- L<<Logger::Error<<"Unable to execv '"<<argv[0]<<"': "<<strerror(errno)<<endl;
+ if(execvp(argv[0], newargv)<0) {
+ L<<Logger::Error<<"Unable to execvp '"<<argv[0]<<"': "<<strerror(errno)<<endl;
char **p=newargv;
while(*p)
L<<Logger::Error<<*p++<<endl;
exit(1);
}
- L<<Logger::Error<<"execve returned!!"<<endl;
+ L<<Logger::Error<<"execvp returned!!"<<endl;
// never reached
}
else if(pid>0) { // parent
p.setQuestion(Opcode::Query,domain,QType::AXFR);
p.wrapup();
- int replen=htons(p.len);
+ u_int16_t replen=htons(p.len);
Utility::iovec iov[2];
iov[0].iov_base=(char*)&replen;
iov[0].iov_len=2;
ret.push_back(rr);
if(!(qtype==QType(QType::CNAME))) {// perhaps they really wanted a CNAME!
set<GetBestNSAnswer>beenthere;
- res=doResolve(j->content, qtype, ret, depth, beenthere);
+ res=doResolve(j->content, qtype, ret, depth+1, beenthere);
}
return true;
}
S.inc("tcp-queries");
DNSPacket *packet=new DNSPacket;
- if(packet->parse(mesg, pktlen)<0)
- break;
-
packet->setRemote((struct sockaddr *)&remote,sizeof(remote));
+ if(packet->parse(mesg, pktlen)<0)
+ break;
+
if(packet->qtype.getCode()==QType::AXFR) {
if(doAXFR(packet->qdomain, packet, fd))
S.inc("tcp-answers");