For later versions, please see http://wiki.powerdns.com/projects/trac/timeline This file will not be updated anymore as this page automates what was previously here. changes since 2.9.16: - moved to newer automake (1.6) - BUG!! = in passwords - better check for % in queries - make gmysql compile on Solaris - be more precise in detecting duplicate MX records - allow version override (reported with version.bind) - for more changes, see http://ds9a.nl/cgi-bin/cvstrac/pdns/timeline changes since 2.9.15: - zone2sql now compiles again (error on STDIN_FILENO) (Derrik Pates) - fixed some uninitialized reads - fixed a bogus listen call - Solaris dumped core when parsing incoming LOC records (machine to debug on provided by Andrew Mulholland) - delete instead of delete[] in MTasker (thanks valgrind!) - several uninitialized variables used (thanks valgrind!) - MySQL can now be used on a different port again (Chris Anderton) - big speedup in pdns_recursor - I think, not sure, that pdns_recursor throttling did not always throttle well enough - qgen tool - updated b.root-servers.net address - SOA serials & sundry are unsigned, itoa messed that op (Michel Stol) - chroot now no longer needs so many files in the chroot - cleanup the controlsocket when not in use anymore - LDAP cleanup, better random shuffling of hosts - bigendian fixes for mips && solaris recursor proxy (Remco Post) - included geobackend (Mark Bergsma) changes since 2.9.14: - you can now do this: dig axfr ds9a.nl @213.244.168.210 | \ /usr/bin/zone2sql --gmysql --zone=- | \ mysql -u pdns pdns - the '-' is new - there is now better duplicate zone detection - allow-recursion-override works but was on by default - logging was off - debian/rules forgot sqllite - removed libpqpp from build-depends - recursor accidentally linked in mysql (christopher meerwald) - fixed instability in pdns_recursor (had to do with the sorted nameserver stuff) - improved output of stats - LDAP compiles again! changes since 2.9.13: - logging to syslog can now be restricted (norbert) - SOA canonic - zone2ldap cleanup - LDAP: > A big patch for the ldapbackend: > - - Changes to support different lookup methods > - - Better exception handling > - - Better support for load distribution > - - Many cleanups - errno compilation fixes in LDAP code (Norbert) - pdns_recursor was too chatty with TCP (noticed by Mathew Walker) - Generic SQL backend used doQuery where it meant doCommand on set notified (Georg Bauer) - experimental feature 'recursion-check-nxdomain' - 2^30 - postgresql de-c++fiscation - efficiency increases (chomp), reworking argumentparsing (spaces) - loglevel fixes changes since 2.9.12: - pdns_recursor can now survive being disconnected from the net for long enough to expire the entire root - pdns_recursor now also jumbles answers (it did that already, I just didn't know it) - big LDAP cleanup - LDAP now has TLS support - Opteron support (opteron login by jeffdavey@submersion.com) - fixed errors with disable-axfr (Norbert) - improved error reporting in zone2sql (Thom May) - Zone2LDAP updates: Now it's possible to generate ldif files containing a tree or a list of entries. - (Windows) Ported 2.9.13 codebase to Windows. - (Windows) Added the Generic SQLite backend. - (Windows) Made the Generic ODBC backend conform to the SSql standard again. - (Windows) Removed the old ODBC backend. - (Windows) The recursor was ported from scratch and now works as an NT service. - (Windows) Renamed the service to "PowerDNS" (recursor is called "PowerDNS Recursor"). - (Windows) Rewrote the installer from scratch and upgraded to NSIS 2 (nsis.sf.net) - (Windows) Some other fixes and improvements. changes since 2.9.11: - ldap updates no longer sends entire reverse zone with AXFR - SRV fixes for zonefiles (Christof Meerwald) - gpgsql no longer reports as gmysql (Sherwin Daganoto) - we now understand 0.0.0.0/0 - report more exactly what we bind to (don't trust gethostbyname) - removed only-soa hackery (noticed by Norbert Sendetzky) - added --version - clean up some parameter descriptions - cleanups by Norbert (getAuth moved to chopOff, arguments 'contains' massive cleanup) - improved reporting to which addresses we bind (now always mentions IP addresses) - added delegation-only feature (thanks to ISC) - some Debian fixes - pdns_recursor does not try to resolve its own IP addresses anymore - pdns_recursor has gained an init.d script - sqlite support from - bindbackend2 gains supermaster support (Mark Bergsma), untested - slave communicator more robust against misconfiguration (empty master field) - postgresql backend gains error checking support // - soa serial autocalculation now also honours soa-serial-offset (Steve Sobol) - we now shuffle answers changes since 2.9.10: - pdns_recursor now cleans its cache - pdns_recursor writes its pid to disk now (FreeBSD port maintainer) - disable-axfr check was reversed (oops) - LDAP now supports AXFR and a default TTL - some debugging output messed up the working of pdns_control (Mark Bergsma) - updates to axfr --help output (Norbert Sendetzky) Changes since 2.9.8: - fixed a crash when adding additional records - make Notifications jump in front of the queue, allowing for speedier updates (suggested by Mark Jeftovic of EasyDNS) - gid/uid logging confusion (Dean Mills) - DNS TTLs were random values - OpenLDAP 2.1 fix - Error handling for invalid MX records - Better exception handling - Rewritten lookup() code Changes since 2.9.7: - NS queries for zones we are not authoritative about now get their NS records in the authority section imp - powerldap.hh doesn't need crypt.h (Richard Arends) - can't handle binary labels, print a warning about that bug - recursor sometimes did very extended negative caching, sometimes for *days* - allow-axfr-ips setting now leads to disabling AXFR for non-listed addresses. imp - added Solaris init.d script bug - g* backends now lowercase their records field - AIX support - removed everybody's favorite warning in zone2ldap.cc - added zone2ldap.cc Changes since 2.9.6: * need to do work on ( and ) in zones! feat - added local-query-address (Mark Bergsma) bug - zone2sql now removes dots in the SOA record imp - zone2sql no longer silently tries to read directories imp - improved error reporting if unable to figure out IP addresses for slaves imp - removed vestigal receiver-threads setting bug - ldapbackend needs to include utility.hh (Remco Post) bug - pdns_control could sometimes leave files behind in /tmp (dG) impr - ldapbackend updates bug - TCP incoming AXFR fixes for Solaris and other big endian systems (Willem de Groot helped debug) imp - bogus error message about unparseable packets (Mark Bergsma) bug - solved potential crash in recursor (Dan Faerch delivered coredump) imp - when started via a path, pdns_server could not always find itself (Maurice Nonnekes) bug - silly wuh debugging output in zone2sql/bindbackend (Ivo van der Wijk) imp - pdns_recursor lived in the 'bin' and not the 'sbin' directory (Norbert Sendetzky) imp - chatter from master/slave backend is not 'Error'-worthy (Willem) bug - recursor neglected the difference between negative cache of NXDOMAIN and NOERROR feat - added ipv6 AAAAditional processing (noticed by Stephane Bortzmeyer) bug - fixed incorrect AA bit on serving NS from non-top records (noticed by Stephane Bortzmeyer) bug - added robustness fixed to dnspacket.cc getAnswers for incoming queries bug - freebsd webserver Changes since 2.9.5: - implemented isMaster in bindbackend (we now react to notifies) - added zoneId to mboxfw stuff - massive speedup - $GENERATE off by one bug (Christian Laursen) - Outgoing AXFR crashes with certain backends or frequent AXFRs (thanks to ISP Services for testing this in production) - GODBC - LDAP - possible issue resolved with case differences in domain names and incoming AXFR - now also accept 'in' as 'IN' (noted by Joris Vandalon) - $include fixed, sometimes lost a " or the last character (noted by Joris Vandalon) Changes since 2.9.4: - heap of work in shortening dnspacket.cc (factor out common operations) - work on recursor - recursor renamed - added unknown record type support (+1024) - added names for SIG and KEY records - HINFO incoming - UltraSparc alignment issues Chris Andrews - compression (Mark Bergsma) - SRV records (Ueli Heuer) - updated J root-server IP address in the recursor - added USR1 forced log output - changed meaning of 'cache hits -> packets which could be answered without sending packets out - added -lz (James H. Cloos Jr) to MySQL - added name to webserver (Daniel Meyer) - fixed zone2sql root-zone issues (Brad Knowles) Changes since 2.9.3a: feat - make *all* sql in gsqlbackends available for configuration (Martin Klebermass/bert hubert) feat - recursor impr - axfr backend transaction now only started after first actual record is in impr - improved zone parser error message about time specification impr - huge improvement in performance of bind-domain-status (spotted by Erik Bos) impr - AXFR terminated with an EOF is now an error, unless a second SOA was seen impr - 'migration' chapter was outdated bug - zone parser now allows both $include and $INCLUDE bug - wildcard ANY queries work again (colemarcus) bug - resolved crashes after failed gmysql/gpgsql connections bug - major brokenness in slave support in gmysql/gpgsql (mark) bug - solaris compilation fixes bug - make IPv6 work again on FreeBSD (Peter van Dijk) bug - neglected to properly initialize the socklen of accept of dynlistener ;-( bug - multiple backends+axfr work again bug - improve bindbackend abortTransaction should no longer block the zone bug - further alignment fixes (should help on UltraSparc) bug - fixes for more recent libpq++ (Julien LEMOINE / SpeedBlue) bug - socklen wasn't filled in with multiple listen addresses bug - tyop in manpages resolved (Marco Davids) Changes since 2.9.2: - windows compilation patches - tiny improvements in win98 error messages - pgmysqlbackend may have been unable to launch now called gpgsql and gpgsql2 - bind backend can now deal with broken and missing zones - bind backend reports way more errors instead of just falling over - can now understand incoming RP records in AXFR - fixed potential crasher bug in shortened packet parsing - now groks LOC records incoming/outgoing - configparser now strips leading spaces in arguments - improved chroot error reporting - lots of bind backend work - we now ignore 'hint' 'forward' whatever zones - added 'bind-domain-status', 'bind-reload-now' - added 'retrieve' - bind zones are now way smaller on disk - 'notify' no longer prints out garbage to pdns_control - more verbose logging of AXFRs - is a heavy operation already, logging won't add much to that - suppressed a lot of master/slave chatter about 'all slaves/masters fresh' Changes since 2.9.1: - removed debugging output from the webserver (found by Paul Wouters) - due to Solaris portability fixes, qtypes>127 were broken. These include NAPTR, ANY and AXFR. The upshot is that powerdns wasn't performing outgoing AXFRs nor ANY queries. These were the 'question for type -1' warnings in the log - pdns/pdns now has a +x by default (suggested by Paul Wouters) - bug in documentation (pgmysqlbackend != pgmysql backend) (Paul Wouters) - Red Hat has weird location for pgsql includes (Paul Wouters) - incoming AXFR could theoretically miss some trailing records (not observed, but could happen) - with some remotes, an incoming AXFR would not terminate until a timeout occured. - incoming AXFR did not support TXT records (spotted by Paul Wouters) - added xdb - dynamic modules work again! - openbsd compiles but crashes at startup Changes since 2.9: - 'set' no longer allows setting non-existent variables - added db2 backend to distribution - added beginnings of ./configure autoconfiscation of mysql location - fixed very embarrassing bug in bind parser - would die on escaping a ' - pipebackend back - freebsd fixes - Solaris fixes (thanks Mark Bakker, Edvard Tuinder) - removed silly debugging message ('sd.ttl from cache') Changes since 2.8: - license - cleanups from Erik Bos @ xs4all - build improvements from Wichert Akkerman - open sourcing changes since 2.7.1: - pipe backend now has 'pipe-regex' - pipe backend honours query-logging - axfr timeout could cause crashes when transferring zone from master - improved pipebackend documentation changes since 2.6.1: - controlsocket now owned by the setgid gid - SOA could have the wrong TTL leading to double records on ANY queries ("Jonas Daugaard" <jonas@cube.dk>) - compression could suddenly be off Jonas Daugaard" <jonas@cube.dk> - added --mysql-table (Ian Newlands) - ranges work again (in allow-axfr-ips) (florus both) - pipebackend now has pipe-timeout feature (Steve Bromwich) - killed backends should respawn again (Steve Bromwich) - backtrace feature under Linux - corrupt packet error during axfr with secondary should not take down pdns (Mike+Simon) - >256 bytes compressed packet offsets did not function (Mike+Simon) changes since 2.6: - repaired packetcache Changes since 2.5.1: - removed 'unknown' packets from PacketCache - improved packet accounting so counters match up better - created ability to run with cache-ttl=0 and query-cache-ttl=0 and negquery-cache-ttl=0 - fixed silly bug with SOA cache with escaped dots - performance increases - @ hack in NS records for additional processing - only-soa feature - fixed very bad latency calculation error - now start out with an ANY query to catch CNAMEs and possibly first-level-NS - added 'cricket' to init.d script - made cache quicker - zone2sql now again can read Verisign generated COM/NET/ORG zones $TTL in the middle of a record - fixed bug with \ escaping in records that were cached Changes since 2.5: - added RFC optional negative caching - small speedup in non-packet-cached queries - fixed huge memory leak in query cache - added cache counts Changes since 2.4: enhance - packetcache is now case-insensitive but does give correct case answers enhance - packetcache is now way more memory efficient reengineered dnspacket just stores a string bug - packetcache could change the 'rd' bit of queries bug - resolver would waste heaps of fd's bug - resolver would not log tcp allocation error bug - resolver would try to bind to priviliged ports bug - AXFR from masters had case sensitivity issues enhance - further improved some AXFR error wording (all AXFR errors now contain the word AXFR) feature - flags can now also be specified as 'off' to turn them off, instead of only as 'no' enhance - packetcache is now less lock-happy and a lot more complicated feature - database queries with no or one response are now also cached in the packet cache enhance - log-dns-details turn off for more performance Changes since 2.3: - improved logging in DNS recursing proxy - fixed crasher bug in compressed label parser - added query-logging flag - added ability to change some runtime flags - added unified gmysql/gpgsql2 driver - packetcache now also caches recursive queries live in separate namespace - added 'peak queries/second' - more graceful death in case of master/slave communicator database lack Changes since 2.2: - improved error messages in master/slave communicator - added slave-cycle-interval setting - fixed SIGPIPE errors in communicator - added additional check for SOA in ANY query (DENIC) - pdns_control purge was broken badly - master/slave communicator could get confused by delayed answers from slow masters when operating as a slave. Changes since 2.1: - wildcard CNAMEs! - tcpreceiver sometimes would fall over a recursing packet that was too short or malformed :-( (signal6) - tcpreceived could wait far too long for response from remote recursor - cache-purge purged too much (Simon Kirby) - cache-purge can now purge suffixes (Mike Benoit) - some exceptions may not have been caught (tcp receiver connection thread, dnsproxy) - EOF on talking to TCP recursing backend would cause signal 6 - added soa-serial-offset to placate DENIC (again) Changes since 2.0.1: - added --transactions to zone2sql - there is now an option for wildcard fancy urls - --lazy-recursion bug - configuration files aren't overwritten by the rpm bug - embarrassing bug in tcp recursion proxy (byteorder related) bug - tcp proxy neglected to honor port setting - added 'pdns_control purge' - improved Oracle backend documentation and support Changes since 2.0: - fixed PDNS ignoring logging-facility in commandline, thanks to Karl from WebMachine - added --slave to zone2sql - improved @ escaping in SOA hostmaster Changes since 2.0rc2: - fixed zone2sql hang - fixed pointer arithmetic problem in packetparser Changes since 2.0rc1: - (WIN32) added a NTLog urgency to the logging class to avoid spamming the NT log. - (WIN32) ported zone2sql and added it to the installation. - (WIN32) ditched the Utility::Signal class. - fixed chroot - fixed setuid/setgid - fixed >256 MX prios Jeff Crowe - fixed ipv6 recursor forwarding (handy ipv6 enabler too!) - fixed bogus notification reception code - fixed AXFR code bug for 'many packets' format with no question in later packets Changes since 1.99.12: - now lowercase $ORIGIN too for postgresql - strip trailing dot on $ORIGIN - relative paths in named.conf include statements now work as in bind (Jeff Miller) - relative paths in zone $include statements now work as in bind (Jeff Miller) - fixed nasty crasher bug in mysqlbackend with . zone serving - (WIN32) now reads the pdns.conf file if available. - (WIN32) when running as a regular console app you can now shut it down using ctrl+c etc. - (WIN32) installer now creates a default pdns.conf if none available. - (WIN32) bug fixed where uninstaller wouldn't remove all files that had to be removed. - (WIN32) dll's are now installed locally (in the same dir as the pdns executable). - (WIN32) pdns_control is now added to the distribution. - (WIN32) pdns responds to pdns_control commands correctly. - (WIN32) added experimental master/slave support to the ODBC backend. - (WIN32) fixed a bug in the database structure of the example zone. - (WIN32) inserted a new (smaller) example zone. - (WIN32) lots of small cleanups and fixes. Changes since 1.99.11: - start of w2k merge - zone2sql now understands $INCLUDE - added --soa-minimum-ttl for DENIC compliance - fixed bug in init.d scripts when virtual hosting - added limit on number of simultaneous TCP connections - added db2 backend - case sensitivity issues fixed - zone2sql now lowercases postgresql - pdns_control now puts local socket in /tmp Changes since 1.99.10: - now understand postfix ttl multipliers in zones outside of SOA - no longer get confused by whitespace only lines after regular lines - getRemote() method added for open source backend development kit Changes since 1.99.9: features: - log-failed-updates - facility logging - work on master now drills a hole for AXFR - can now launch without ipv4 - also-notify support in backend - added TCPv6, which works too - more bsd-like default directories for freebsd - zone2sql now groks 'domains' table bugs: - fixed wildcard 'no data' error bug - only not cache rd packets if doing recursion - if a backend falls over, properly launch a new one - ipv6 now actually works :-) Changes since 1.99.8: features: - added IPv6 parsing for slave AXFR - added IPv6 listener - made AXFR pull reject out of zone data - supermaster - recursor can also live on another port now - improved slave transferring semantics (scales better) bugs: - pdns sometimes sent a duplicate answer when operating with a recursing backend - don't send out servfail on out of bailiwick CNAME traversal - made zone2sql/bindparser resilient for ^Z - pgsqlbackend no longer prints out connect string - pgsqlbackend depended on wrong .so in debian unstable link (thanks Wojas) - fix respawn of database connection in case of fatal error internal: - changed SOA generation infrastructure - improved internal backend API - bindbackend passes regression test Changes since 1.99.7: - simplified bindbackend, potentially resolving crashes observed - fixed SOA data - fixed SOA chopping for finding recursion - added NAPTR - documented all records encoded - duplicate delete call in magical SOA id calculation - servfail on question for unknown domain - allow-axfr-ips now also does netmasks - disabled rapid additional spawning of new backends on launch - slight delay between spawning of processes to prevent overload in backends (mysql) - added slave support - added recursion + acl no longer caching recursive queries - fixed potential tcp and AXFR segmentation fault Changes since 1.99.6: features: - improved error reporting when parsing named.confs (better line number counting) - added --no-config - added --bare to zone2sql - added --gpgsql to zone2sql - documented zone2sql bugs: - many more named.confs can now be parsed - we now allow _ in filenames - freebsd version now stops/starts as it should - wildcards were off by default - --oracle did not function in zone2sql Changes since 1.99.5: features: - added --webserver-print-arguments (defaults to no) - added gpgsqlbackend - fixed bind example zones bugs: - fixed webserver listing of log messages - fixed bad tcp question counting - fixed bad tcp answer counter name - fixed packetcache to detect clock skew - improved flex error message - accept : as part of filenames Changes since 1.99.4: bugs: - zone2sql no longer crashes on named.confs with less than 100 domains - in case of huffman encoding error, print offending character - fixed memory leaks big enough to drive a truck through - removed yet more fd leaks in guardian - made pipebackend less chatty - daemon now closes filedescriptors 0, 1 & 2 performance: - improved TCP dns code now only creates backend connection for AXFR has timeouts features: - made it possible to disable checks on ctime in bindbackend - added --list-modules Changes since 1.99.3: bugs: - make sure zone compression is ON by default (heisenbug) - fixed lack of exception catching in tcpreceiver - made sure mysqlbackend closes its database connection - learned bindparser about ip addresses which are not filenames - fix truncation bug (don't truncate stuff in the cache) features: - learned zone2sql about $GENERATE - added --on-error-resume-next to zone2sql - grok '@' in RHS of zonestatements - catch dns updates & dns notifies, send out NOTIMP - give zone2sql a default ttl performance: - don't search for fancy records on ANY if not wanted Changes since 1.99.2: - made bindparser case insensitive - fixed AXFR rcodes for disallowed or unauth zones - fixed fd leak when relaunching a child - fixed zone2sql lack of fclose() - make --help accept a prefix parameter - added --zone-name to zone2sql - added --disable-axfr (untested!) - added --alow-axfr-ips - rewrote zonefile parser - enabled direct zoneparsing by pdns 9500 zones in 3.5 seconds - fixed zonetransfers bugs (we died on axfr connection reset by peer) - implemented rfc-breaking axfr dump speedup - fixed webserver crash Changes since 1.99.1: - fixed uid/gid confusal - fixed module backend restarting code - bummed off 3 syscalls - removed lot of unnecessary gettimeofday calls - fixed buffer overrun in local socket binding - do not parse configuration when outputting configuration (when reinstalling) 1.4.1 - added a webserver - integrated safe_ahudns functionality - improved ahudns.init.d, added to default install - made socketdir configurable - Fixed smtpredir 'black hole' forwarding behaviour in case of unknown recipients - Properly report temporary errors now as 4xx - ANY queries now include MBOXFW data - NS records now have precedence over wildcard records - some more logging behind DLOG() so it only appears in verbose-logging builds Changes since 1.1: - Resolved memory leak in TCP server - We did not reset the AA bit on a NS referral - distribution tar did not include documentation directory - improved database recycling in case of database server failure and restoration