commit pdns for openSUSE:Factory

Hello community, here is the log from the commit of package pdns for openSUSE:Factory checked in at 2018-08-31 10:47:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pdns (Old) and /work/SRC/openSUSE:Factory/.pdns.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "pdns" Fri Aug 31 10:47:03 2018 rev:56 rq:632190 version:4.1.4 Changes: -------- --- /work/SRC/openSUSE:Factory/pdns/pdns.changes 2018-05-29 10:49:20.666697109 +0200 +++ /work/SRC/openSUSE:Factory/.pdns.new/pdns.changes 2018-08-31 10:47:07.283397150 +0200 @@ -1,0 +2,24 @@ +Wed Aug 29 16:06:03 UTC 2018 - amajer@suse.com + +- Update to 4.1.4 + - Improvements + * #6590: Fix warnings reported by gcc 8.1.0. + * #6632, #6844, #6842, #6848: Make the gmysql backend future-proof + * #6685, #6686: Initialize some missed qtypes. + + - Bug Fixes + * #6780: Avoid concurrent records/comments iteration from + running out of sync. + * #6816: Fix a crash in the API when adding records. + * #4457, #6691: pdns_control notify: handle slave without + renotify properly. + * #6736, #6738: Reset the TSIG state between queries. + * #6857: Remove SOA-check backoff on incoming notify and fix + lock handling. + * #6858: Fix an issue where updating a record via DNS-UPDATE in + a child zone that also exists in the parent zone, we would + incorrectly apply the update to the parent zone. + * #6676, #6677: Geoipbackend: check geoip_id_by_addr_gl and + geoip_id_by_addr_v6_gl return value. (Aki Tuomi) + +------------------------------------------------------------------- Old: ---- pdns-4.1.3.tar.bz2 pdns-4.1.3.tar.bz2.sig New: ---- pdns-4.1.4.tar.bz2 pdns-4.1.4.tar.bz2.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pdns.spec ++++++ --- /var/tmp/diff_new_pack.Bqq8yK/_old 2018-08-31 10:47:07.723397689 +0200 +++ /var/tmp/diff_new_pack.Bqq8yK/_new 2018-08-31 10:47:07.727397694 +0200 @@ -17,11 +17,11 @@ Name: pdns -Version: 4.1.3 +Version: 4.1.4 Release: 0 # %define pkg_name pdns -%define pkg_version 4.1.3 +%define pkg_version 4.1.4 # %if 0%{?suse_version} > 1230 || 0%{?rhel_version} > 600 || 0%{?centos_version} > 600 || 0%{?fedora_version} >= 20 || 0%{?el7}%{?fc20}%{?fc21}%{?fc22}%{?fc23}%{?fc24}%{?fc25} %bcond_without systemd ++++++ pdns-4.1.3.tar.bz2 -> pdns-4.1.4.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/.version new/pdns-4.1.4/.version --- old/pdns-4.1.3/.version 2018-05-24 14:52:44.000000000 +0200 +++ new/pdns-4.1.4/.version 2018-08-29 16:07:16.000000000 +0200 @@ -1 +1 @@ -4.1.3 +4.1.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/configure new/pdns-4.1.4/configure --- old/pdns-4.1.3/configure 2018-05-24 14:52:43.000000000 +0200 +++ new/pdns-4.1.4/configure 2018-08-29 16:07:15.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for pdns 4.1.3. +# Generated by GNU Autoconf 2.69 for pdns 4.1.4. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='pdns' PACKAGE_TARNAME='pdns' -PACKAGE_VERSION='4.1.3' -PACKAGE_STRING='pdns 4.1.3' +PACKAGE_VERSION='4.1.4' +PACKAGE_STRING='pdns 4.1.4' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1538,7 +1538,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures pdns 4.1.3 to adapt to many kinds of systems. +\`configure' configures pdns 4.1.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1608,7 +1608,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of pdns 4.1.3:";; + short | recursive ) echo "Configuration of pdns 4.1.4:";; esac cat <<\_ACEOF @@ -1842,7 +1842,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -pdns configure 4.1.3 +pdns configure 4.1.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2435,7 +2435,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by pdns $as_me 4.1.3, which was +It was created by pdns $as_me 4.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3315,7 +3315,7 @@ # Define the identity of the package. PACKAGE='pdns' - VERSION='4.1.3' + VERSION='4.1.4' cat >>confdefs.h <<_ACEOF @@ -23543,7 +23543,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by pdns $as_me 4.1.3, which was +This file was extended by pdns $as_me 4.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23609,7 +23609,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -pdns config.status 4.1.3 +pdns config.status 4.1.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/calidns.1 new/pdns-4.1.4/docs/calidns.1 --- old/pdns-4.1.3/docs/calidns.1 2018-05-24 14:53:36.000000000 +0200 +++ new/pdns-4.1.4/docs/calidns.1 2018-08-29 16:08:05.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CALIDNS" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "CALIDNS" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME calidns \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnsbulktest.1 new/pdns-4.1.4/docs/dnsbulktest.1 --- old/pdns-4.1.3/docs/dnsbulktest.1 2018-05-24 14:53:48.000000000 +0200 +++ new/pdns-4.1.4/docs/dnsbulktest.1 2018-08-29 16:08:17.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSBULKTEST" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSBULKTEST" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnsbulktest \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnsgram.1 new/pdns-4.1.4/docs/dnsgram.1 --- old/pdns-4.1.3/docs/dnsgram.1 2018-05-24 14:53:37.000000000 +0200 +++ new/pdns-4.1.4/docs/dnsgram.1 2018-08-29 16:08:06.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSGRAM" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSGRAM" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnsgram \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnspcap2protobuf.1 new/pdns-4.1.4/docs/dnspcap2protobuf.1 --- old/pdns-4.1.3/docs/dnspcap2protobuf.1 2018-05-24 14:53:50.000000000 +0200 +++ new/pdns-4.1.4/docs/dnspcap2protobuf.1 2018-08-29 16:08:19.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSPCAP2PROTOBUF" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSPCAP2PROTOBUF" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnspcap2protobuf \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnsreplay.1 new/pdns-4.1.4/docs/dnsreplay.1 --- old/pdns-4.1.3/docs/dnsreplay.1 2018-05-24 14:53:38.000000000 +0200 +++ new/pdns-4.1.4/docs/dnsreplay.1 2018-08-29 16:08:07.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSREPLAY" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSREPLAY" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnsreplay \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnsscan.1 new/pdns-4.1.4/docs/dnsscan.1 --- old/pdns-4.1.3/docs/dnsscan.1 2018-05-24 14:53:39.000000000 +0200 +++ new/pdns-4.1.4/docs/dnsscan.1 2018-08-29 16:08:08.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSSCAN" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSSCAN" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnsscan \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnsscope.1 new/pdns-4.1.4/docs/dnsscope.1 --- old/pdns-4.1.3/docs/dnsscope.1 2018-05-24 14:53:40.000000000 +0200 +++ new/pdns-4.1.4/docs/dnsscope.1 2018-08-29 16:08:09.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSSCOPE" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSSCOPE" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnsscope \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnstcpbench.1 new/pdns-4.1.4/docs/dnstcpbench.1 --- old/pdns-4.1.3/docs/dnstcpbench.1 2018-05-24 14:53:49.000000000 +0200 +++ new/pdns-4.1.4/docs/dnstcpbench.1 2018-08-29 16:08:18.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSTCPBENCH" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSTCPBENCH" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnstcpbench \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dnswasher.1 new/pdns-4.1.4/docs/dnswasher.1 --- old/pdns-4.1.3/docs/dnswasher.1 2018-05-24 14:53:41.000000000 +0200 +++ new/pdns-4.1.4/docs/dnswasher.1 2018-08-29 16:08:10.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DNSWASHER" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DNSWASHER" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dnswasher \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/dumresp.1 new/pdns-4.1.4/docs/dumresp.1 --- old/pdns-4.1.3/docs/dumresp.1 2018-05-24 14:53:42.000000000 +0200 +++ new/pdns-4.1.4/docs/dumresp.1 2018-08-29 16:08:11.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DUMRESP" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "DUMRESP" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME dumresp \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/ixplore.1 new/pdns-4.1.4/docs/ixplore.1 --- old/pdns-4.1.3/docs/ixplore.1 2018-05-24 14:53:42.000000000 +0200 +++ new/pdns-4.1.4/docs/ixplore.1 2018-08-29 16:08:12.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "IXPLORE" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "IXPLORE" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME ixplore \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/nproxy.1 new/pdns-4.1.4/docs/nproxy.1 --- old/pdns-4.1.3/docs/nproxy.1 2018-05-24 14:53:43.000000000 +0200 +++ new/pdns-4.1.4/docs/nproxy.1 2018-08-29 16:08:12.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "NPROXY" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "NPROXY" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME nproxy \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/nsec3dig.1 new/pdns-4.1.4/docs/nsec3dig.1 --- old/pdns-4.1.3/docs/nsec3dig.1 2018-05-24 14:53:44.000000000 +0200 +++ new/pdns-4.1.4/docs/nsec3dig.1 2018-08-29 16:08:13.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "NSEC3DIG" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "NSEC3DIG" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME nsec3dig \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/pdns_control.1 new/pdns-4.1.4/docs/pdns_control.1 --- old/pdns-4.1.3/docs/pdns_control.1 2018-05-24 14:53:32.000000000 +0200 +++ new/pdns-4.1.4/docs/pdns_control.1 2018-08-29 16:08:01.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PDNS_CONTROL" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "PDNS_CONTROL" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME pdns_control \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/pdns_notify.1 new/pdns-4.1.4/docs/pdns_notify.1 --- old/pdns-4.1.3/docs/pdns_notify.1 2018-05-24 14:53:45.000000000 +0200 +++ new/pdns-4.1.4/docs/pdns_notify.1 2018-08-29 16:08:14.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PDNS_NOTIFY" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "PDNS_NOTIFY" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME pdns_notify \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/pdns_server.1 new/pdns-4.1.4/docs/pdns_server.1 --- old/pdns-4.1.3/docs/pdns_server.1 2018-05-24 14:53:31.000000000 +0200 +++ new/pdns-4.1.4/docs/pdns_server.1 2018-08-29 16:08:00.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PDNS_SERVER" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "PDNS_SERVER" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME pdns_server \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/pdnsutil.1 new/pdns-4.1.4/docs/pdnsutil.1 --- old/pdns-4.1.3/docs/pdnsutil.1 2018-05-24 14:53:33.000000000 +0200 +++ new/pdns-4.1.4/docs/pdnsutil.1 2018-08-29 16:08:02.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PDNSUTIL" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "PDNSUTIL" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME pdnsutil \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/saxfr.1 new/pdns-4.1.4/docs/saxfr.1 --- old/pdns-4.1.3/docs/saxfr.1 2018-05-24 14:53:46.000000000 +0200 +++ new/pdns-4.1.4/docs/saxfr.1 2018-08-29 16:08:15.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SAXFR" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "SAXFR" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME saxfr \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/sdig.1 new/pdns-4.1.4/docs/sdig.1 --- old/pdns-4.1.3/docs/sdig.1 2018-05-24 14:53:47.000000000 +0200 +++ new/pdns-4.1.4/docs/sdig.1 2018-08-29 16:08:16.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SDIG" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "SDIG" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME sdig \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/zone2json.1 new/pdns-4.1.4/docs/zone2json.1 --- old/pdns-4.1.3/docs/zone2json.1 2018-05-24 14:53:33.000000000 +0200 +++ new/pdns-4.1.4/docs/zone2json.1 2018-08-29 16:08:03.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "ZONE2JSON" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "ZONE2JSON" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME zone2json \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/zone2ldap.1 new/pdns-4.1.4/docs/zone2ldap.1 --- old/pdns-4.1.3/docs/zone2ldap.1 2018-05-24 14:53:35.000000000 +0200 +++ new/pdns-4.1.4/docs/zone2ldap.1 2018-08-29 16:08:04.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "ZONE2LDAP" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "ZONE2LDAP" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME zone2ldap \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/docs/zone2sql.1 new/pdns-4.1.4/docs/zone2sql.1 --- old/pdns-4.1.3/docs/zone2sql.1 2018-05-24 14:53:34.000000000 +0200 +++ new/pdns-4.1.4/docs/zone2sql.1 2018-08-29 16:08:03.000000000 +0200 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "ZONE2SQL" "1" "May 24, 2018" "4.1" "PowerDNS Recursor" +.TH "ZONE2SQL" "1" "Aug 29, 2018" "4.1" "PowerDNS Recursor" .SH NAME zone2sql \- . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/modules/geoipbackend/geoipbackend.cc new/pdns-4.1.4/modules/geoipbackend/geoipbackend.cc --- old/pdns-4.1.3/modules/geoipbackend/geoipbackend.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/modules/geoipbackend/geoipbackend.cc 2018-08-29 16:07:05.000000000 +0200 @@ -452,8 +452,11 @@ bool GeoIPBackend::queryCountry(string &ret, GeoIPLookup* gl, const string &ip, const geoip_file_t& gi) { if (gi.first == GEOIP_COUNTRY_EDITION || gi.first == GEOIP_LARGE_COUNTRY_EDITION) { - ret = GeoIP_code3_by_id(GeoIP_id_by_addr_gl(gi.second.get(), ip.c_str(), gl)); - return true; + int id; + if ((id = GeoIP_id_by_addr_gl(gi.second.get(), ip.c_str(), gl)) > 0) { + ret = GeoIP_code3_by_id(id); + return true; + } } else if (gi.first == GEOIP_REGION_EDITION_REV0 || gi.first == GEOIP_REGION_EDITION_REV1) { GeoIPRegion* gir = GeoIP_region_by_addr_gl(gi.second.get(), ip.c_str(), gl); @@ -476,8 +479,11 @@ bool GeoIPBackend::queryCountryV6(string &ret, GeoIPLookup* gl, const string &ip, const geoip_file_t& gi) { if (gi.first == GEOIP_COUNTRY_EDITION_V6 || gi.first == GEOIP_LARGE_COUNTRY_EDITION_V6) { - ret = GeoIP_code3_by_id(GeoIP_id_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl)); - return true; + int id; + if ((id = GeoIP_id_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl)) > 0) { + ret = GeoIP_code3_by_id(id); + return true; + } } else if (gi.first == GEOIP_REGION_EDITION_REV0 || gi.first == GEOIP_REGION_EDITION_REV1) { GeoIPRegion* gir = GeoIP_region_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl); @@ -500,8 +506,11 @@ bool GeoIPBackend::queryCountry2(string &ret, GeoIPLookup* gl, const string &ip, const geoip_file_t& gi) { if (gi.first == GEOIP_COUNTRY_EDITION || gi.first == GEOIP_LARGE_COUNTRY_EDITION) { - ret = GeoIP_code_by_id(GeoIP_id_by_addr_gl(gi.second.get(), ip.c_str(), gl)); - return true; + int id; + if ((id = GeoIP_id_by_addr_gl(gi.second.get(), ip.c_str(), gl)) > 0) { + ret = GeoIP_code_by_id(id); + return true; + } } else if (gi.first == GEOIP_REGION_EDITION_REV0 || gi.first == GEOIP_REGION_EDITION_REV1) { GeoIPRegion* gir = GeoIP_region_by_addr_gl(gi.second.get(), ip.c_str(), gl); @@ -524,7 +533,11 @@ bool GeoIPBackend::queryCountry2V6(string &ret, GeoIPLookup* gl, const string &ip, const geoip_file_t& gi) { if (gi.first == GEOIP_COUNTRY_EDITION_V6 || gi.first == GEOIP_LARGE_COUNTRY_EDITION_V6) { - ret = GeoIP_code_by_id(GeoIP_id_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl)); + int id; + if ((id = GeoIP_id_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl)) > 0) { + ret = GeoIP_code_by_id(id); + return true; + } return true; } else if (gi.first == GEOIP_REGION_EDITION_REV0 || gi.first == GEOIP_REGION_EDITION_REV1) { @@ -548,8 +561,11 @@ bool GeoIPBackend::queryContinent(string &ret, GeoIPLookup* gl, const string &ip, const geoip_file_t& gi) { if (gi.first == GEOIP_COUNTRY_EDITION || gi.first == GEOIP_LARGE_COUNTRY_EDITION) { - ret = GeoIP_continent_by_id(GeoIP_id_by_addr_gl(gi.second.get(), ip.c_str(), gl)); - return true; + int id; + if ((id = GeoIP_id_by_addr_gl(gi.second.get(), ip.c_str(), gl)) > 0) { + ret = GeoIP_continent_by_id(id); + return true; + } } else if (gi.first == GEOIP_REGION_EDITION_REV0 || gi.first == GEOIP_REGION_EDITION_REV1) { GeoIPRegion* gir = GeoIP_region_by_addr_gl(gi.second.get(), ip.c_str(), gl); @@ -572,8 +588,11 @@ bool GeoIPBackend::queryContinentV6(string &ret, GeoIPLookup* gl, const string &ip, const geoip_file_t& gi) { if (gi.first == GEOIP_COUNTRY_EDITION_V6 || gi.first == GEOIP_LARGE_COUNTRY_EDITION_V6) { - ret = GeoIP_continent_by_id(GeoIP_id_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl)); - return true; + int id; + if ((id = GeoIP_id_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl)) > 0) { + ret = GeoIP_continent_by_id(id); + return true; + } } else if (gi.first == GEOIP_REGION_EDITION_REV0 || gi.first == GEOIP_REGION_EDITION_REV1) { GeoIPRegion* gir = GeoIP_region_by_addr_v6_gl(gi.second.get(), ip.c_str(), gl); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/modules/gmysqlbackend/smysql.cc new/pdns-4.1.4/modules/gmysqlbackend/smysql.cc --- old/pdns-4.1.3/modules/gmysqlbackend/smysql.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/modules/gmysqlbackend/smysql.cc 2018-08-29 16:07:05.000000000 +0200 @@ -32,6 +32,12 @@ #include "pdns/namespaces.hh" #include "pdns/lock.hh" +#if MYSQL_VERSION_ID >= 80000 && !defined(MARIADB_BASE_VERSION) +// Need to keep this for compatibility with MySQL < 8.0.0, which used typedef char my_bool; +// MariaDB up to 10.4 also always define it. +typedef bool my_bool; +#endif + bool SMySQL::s_dolog; pthread_mutex_t SMySQL::s_myinitlock = PTHREAD_MUTEX_INITIALIZER; @@ -427,7 +433,7 @@ #endif if (d_setIsolation && (retry == 1)) - mysql_options(&d_db, MYSQL_INIT_COMMAND,"SET SESSION tx_isolation='READ-COMMITTED'"); + mysql_options(&d_db, MYSQL_INIT_COMMAND,"SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"); mysql_options(&d_db, MYSQL_READ_DEFAULT_GROUP, d_group.c_str()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/modules/remotebackend/remotebackend.hh new/pdns-4.1.4/modules/remotebackend/remotebackend.hh --- old/pdns-4.1.3/modules/remotebackend/remotebackend.hh 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/modules/remotebackend/remotebackend.hh 2018-08-29 16:07:05.000000000 +0200 @@ -216,7 +216,7 @@ string val = asString(value); if (val == "0") return false; if (val == "1") return true; - } catch (JsonException) {}; + } catch (const JsonException&) {}; throw JsonException("Json value not convertible to boolean"); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/communicator.hh new/pdns-4.1.4/pdns/communicator.hh --- old/pdns-4.1.3/pdns/communicator.hh 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/communicator.hh 2018-08-29 16:07:05.000000000 +0200 @@ -275,7 +275,7 @@ struct addrinfo* address = res; do { if (address->ai_addrlen <= sizeof(remote)) { - memcpy(&remote, address->ai_addr, address->ai_addrlen); + remote.setSockaddr(address->ai_addr, address->ai_addrlen); addresses->push_back(remote.toString()); } } while((address = address->ai_next)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/dbdnsseckeeper.cc new/pdns-4.1.4/pdns/dbdnsseckeeper.cc --- old/pdns-4.1.3/pdns/dbdnsseckeeper.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/dbdnsseckeeper.cc 2018-08-29 16:07:05.000000000 +0200 @@ -100,7 +100,7 @@ shared_ptr<DNSCryptoKeyEngine> dpk(DNSCryptoKeyEngine::make(algorithm)); try{ dpk->create(bits); - } catch (std::runtime_error error){ + } catch (const std::runtime_error& error){ throw runtime_error("The algorithm does not support the given bit size."); } dspk.setKey(dpk); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/dnspacket.cc new/pdns-4.1.4/pdns/dnspacket.cc --- old/pdns-4.1.3/pdns/dnspacket.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/dnspacket.cc 2018-08-29 16:07:05.000000000 +0200 @@ -599,6 +599,9 @@ qtype=mdp.d_qtype; qclass=mdp.d_qclass; + + d_trc = TSIGRecordContent(); + return 0; } catch(std::exception& e) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/dnsrecords.cc new/pdns-4.1.4/pdns/dnsrecords.cc --- old/pdns-4.1.3/pdns/dnsrecords.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/dnsrecords.cc 2018-08-29 16:07:05.000000000 +0200 @@ -116,7 +116,7 @@ ComboAddress AAAARecordContent::getCA(int port) const { ComboAddress ret; - memset(&ret, 0, sizeof(ret)); + ret.reset(); ret.sin4.sin_family=AF_INET6; ret.sin6.sin6_port = htons(port); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/dynhandler.cc new/pdns-4.1.4/pdns/dynhandler.cc --- old/pdns-4.1.3/pdns/dynhandler.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/dynhandler.cc 2018-08-29 16:07:05.000000000 +0200 @@ -261,7 +261,7 @@ ostringstream os; if(parts.size()!=3) return "syntax: notify-host domain ip"; - if(!::arg().mustDo("master") && !::arg().mustDo("slave-renotify")) + if(!::arg().mustDo("master") && !(::arg().mustDo("slave") && ::arg().mustDo("slave-renotify"))) return "PowerDNS not configured as master or slave with re-notifications"; DNSName domain; @@ -289,7 +289,7 @@ UeberBackend B; if(parts.size()!=2) return "syntax: notify domain"; - if(!::arg().mustDo("master") && !::arg().mustDo("slave-renotify")) + if(!::arg().mustDo("master") && !(::arg().mustDo("slave") && ::arg().mustDo("slave-renotify"))) return "PowerDNS not configured as master or slave with re-notifications"; L<<Logger::Warning<<"Notification request for domain '"<<parts[1]<<"' received from operator"<<endl; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/ednssubnet.cc new/pdns-4.1.4/pdns/ednssubnet.cc --- old/pdns-4.1.3/pdns/ednssubnet.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/ednssubnet.cc 2018-08-29 16:07:05.000000000 +0200 @@ -57,7 +57,7 @@ return false; if(octetsin > sizeof(address.sin4.sin_addr.s_addr)) return false; - memset(&address, 0, sizeof(address)); + address.reset(); address.sin4.sin_family = AF_INET; if(octetsin > 0) memcpy(&address.sin4.sin_addr.s_addr, options+sizeof(esow), octetsin); @@ -66,7 +66,8 @@ return false; if(octetsin > sizeof(address.sin6.sin6_addr.s6_addr)) return false; - memset(&address, 0, sizeof(address)); + + address.reset(); address.sin4.sin_family = AF_INET6; if(octetsin > 0) memcpy(&address.sin6.sin6_addr.s6_addr, options+sizeof(esow), octetsin); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/effective_tld_names.dat new/pdns-4.1.4/pdns/effective_tld_names.dat --- old/pdns-4.1.3/pdns/effective_tld_names.dat 2018-05-24 14:53:52.000000000 +0200 +++ new/pdns-4.1.4/pdns/effective_tld_names.dat 2018-08-29 16:08:19.000000000 +0200 @@ -381,8 +381,13 @@ net.bm org.bm -// bn : https://en.wikipedia.org/wiki/.bn -*.bn +// bn : http://www.bnnic.bn/faqs +bn +com.bn +edu.bn +gov.bn +net.bn +org.bn // bo : https://nic.bo/delegacion2015.php#h-1.10 bo @@ -546,6 +551,7 @@ not.br ntr.br odo.br +ong.br org.br osasco.br palmas.br @@ -1239,7 +1245,7 @@ utazas.hu video.hu -// id : https://register.pandi.or.id/ +// id : https://pandi.id/en/domain/registration-requirements/ id ac.id biz.id @@ -1250,6 +1256,7 @@ my.id net.id or.id +ponpes.id sch.id web.id @@ -3692,8 +3699,16 @@ seoul.kr ulsan.kr -// kw : https://en.wikipedia.org/wiki/.kw -*.kw +// kw : https://www.nic.kw/policies/ +// Confirmed by registry <nic.tech@citra.gov.kw> +kw +com.kw +edu.kw +emb.kw +gov.kw +ind.kw +net.kw +org.kw // ky : http://www.icta.ky/da_ky_reg_dom.php // Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17 @@ -8608,9 +8623,6 @@ // iveco : 2015-09-03 CNH Industrial N.V. iveco -// iwc : 2014-06-23 Richemont DNS Inc. -iwc - // jaguar : 2014-11-13 Jaguar Land Rover Ltd jaguar @@ -8989,9 +9001,6 @@ // menu : 2013-09-11 Wedding TLD2, LLC menu -// meo : 2014-11-07 MEO Servicos de Comunicacoes e Multimedia, S.A. -meo - // merckmsd : 2016-07-14 MSD Registry Holdings, Inc. merckmsd @@ -9634,9 +9643,6 @@ // sap : 2014-03-27 SAP AG sap -// sapo : 2014-11-07 MEO Servicos de Comunicacoes e Multimedia, S.A. -sapo - // sarl : 2014-07-03 Binky Moon, LLC sarl @@ -10642,9 +10648,6 @@ // xn--zfr164b : 2013-11-08 China Organizational Name Administration Center 政务 -// xperia : 2015-05-14 Sony Mobile Communications AB -xperia - // xyz : 2013-12-05 XYZ.COM LLC xyz @@ -10737,6 +10740,7 @@ // Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ // Submitted by Luke Wells <psl-maintainers@amazon.com> cn-north-1.eb.amazonaws.com.cn +cn-northwest-1.eb.amazonaws.com.cn elasticbeanstalk.com ap-northeast-1.elasticbeanstalk.com ap-northeast-2.elasticbeanstalk.com @@ -12451,10 +12455,6 @@ // Submitted by Stefan Neufeind <info@speedpartner.de> customer.speedpartner.de -// Stackspace : https://www.stackspace.io/ -// Submitted by Lina He <info@stackspace.io> -stackspace.space - // Storj Labs Inc. : https://storj.io/ // Submitted by Philip Hutchins <hostmaster@storj.io> storj.farm @@ -12533,7 +12533,7 @@ webspace.rocks lima.zone -// TransIP : htts://www.transip.nl +// TransIP : https://www.transip.nl // Submitted by Rory Breuk <rbreuk@transip.nl> *.transurl.be *.transurl.eu diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/iputils.cc new/pdns-4.1.4/pdns/iputils.cc --- old/pdns-4.1.3/pdns/iputils.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/iputils.cc 2018-08-29 16:07:05.000000000 +0200 @@ -145,7 +145,7 @@ } bool HarvestDestinationAddress(const struct msghdr* msgh, ComboAddress* destination) { - memset(destination, 0, sizeof(*destination)); + destination->reset(); const struct cmsghdr* cmsg; for (cmsg = CMSG_FIRSTHDR(msgh); cmsg != NULL; cmsg = CMSG_NXTHDR(const_cast<struct msghdr*>(msgh), const_cast<struct cmsghdr*>(cmsg))) { #if defined(IP_PKTINFO) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/iputils.hh new/pdns-4.1.4/pdns/iputils.hh --- old/pdns-4.1.3/pdns/iputils.hh 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/iputils.hh 2018-08-29 16:07:05.000000000 +0200 @@ -282,6 +282,11 @@ return ntohs(sin4.sin_port); } + void reset() + { + memset(&sin4, 0, sizeof(sin4)); + memset(&sin6, 0, sizeof(sin6)); + } }; /** This exception is thrown by the Netmask class and by extension by the NetmaskGroup class */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/misc.cc new/pdns-4.1.4/pdns/misc.cc --- old/pdns-4.1.3/pdns/misc.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/misc.cc 2018-08-29 16:07:05.000000000 +0200 @@ -723,7 +723,7 @@ port = pdns_stou(addr.substr(pos+2)); portSet = true; } - catch(std::out_of_range) { + catch(const std::out_of_range&) { return -1; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/nameserver.cc new/pdns-4.1.4/pdns/nameserver.cc --- old/pdns-4.1.3/pdns/nameserver.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/nameserver.cc 2018-08-29 16:07:05.000000000 +0200 @@ -111,8 +111,8 @@ if(!setNonBlocking(s)) throw PDNSException("Unable to set UDP socket to non-blocking: "+stringerror()); - - memset(&locala,0,sizeof(locala)); + + locala.reset(); locala.sin4.sin_family=AF_INET; if(localname=="0.0.0.0") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/qtype.hh new/pdns-4.1.4/pdns/qtype.hh --- old/pdns-4.1.3/pdns/qtype.hh 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/qtype.hh 2018-08-29 16:07:05.000000000 +0200 @@ -170,6 +170,7 @@ qtype_insert("CNAME", 5); qtype_insert("SOA", 6); qtype_insert("MR", 9); + qtype_insert("WKS", 11); qtype_insert("PTR", 12); qtype_insert("HINFO", 13); qtype_insert("MINFO", 14); @@ -198,6 +199,7 @@ qtype_insert("NSEC3", 50); qtype_insert("NSEC3PARAM", 51); qtype_insert("TLSA", 52); + qtype_insert("SMIMEA", 53); qtype_insert("RKEY", 57); qtype_insert("CDS", 59); qtype_insert("CDNSKEY", 60); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/rfc2136handler.cc new/pdns-4.1.4/pdns/rfc2136handler.cc --- old/pdns-4.1.3/pdns/rfc2136handler.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/rfc2136handler.cc 2018-08-29 16:07:05.000000000 +0200 @@ -33,7 +33,7 @@ bool foundRecord=false; DNSResourceRecord rec; - di->backend->lookup(QType(QType::ANY), rr->d_name); + di->backend->lookup(QType(QType::ANY), rr->d_name, nullptr, di->id); while(di->backend->get(rec)) { if (!rec.qtype.getCode()) continue; @@ -171,7 +171,7 @@ bool foundRecord = false; - di->backend->lookup(rrType, rr->d_name); + di->backend->lookup(rrType, rr->d_name, nullptr, di->id); while (di->backend->get(rec)) { rrset.push_back(rec); foundRecord = true; @@ -289,7 +289,7 @@ break; bool foundShorter = false; - di->backend->lookup(QType(QType::ANY), shorter); + di->backend->lookup(QType(QType::ANY), shorter, nullptr, di->id); while (di->backend->get(rec)) { if (rec.qname == rr->d_name && rec.qtype == QType::DS) fixDS = true; @@ -444,7 +444,7 @@ } // end of NSEC3PARAM delete block - di->backend->lookup(rrType, rr->d_name); + di->backend->lookup(rrType, rr->d_name, nullptr, di->id); while(di->backend->get(rec)) { if (rr->d_class == QClass::ANY) { // 3.4.2.3 if (rec.qname == di->zone && (rec.qtype == QType::NS || rec.qtype == QType::SOA)) // Never delete all SOA and NS's @@ -867,7 +867,7 @@ rrVector_t *vec = &preRRSet->second; DNSResourceRecord rec; - di.backend->lookup(QType(QType::ANY), rrSet.first); + di.backend->lookup(QType(QType::ANY), rrSet.first, nullptr, di.id); uint16_t foundRR=0, matchRR=0; while (di.backend->get(rec)) { if (rec.qtype == rrSet.second) { @@ -965,9 +965,12 @@ } for (const auto &rr : cnamesToAdd) { DNSResourceRecord rec; - di.backend->lookup(QType(QType::ANY), rr->d_name); + di.backend->lookup(QType(QType::ANY), rr->d_name, nullptr, di.id); while (di.backend->get(rec)) { if (rec.qtype != QType::CNAME && rec.qtype != QType::RRSIG) { + // leave database handle in a consistent state + while (di.backend->get(rec)) + ; L<<Logger::Warning<<msgPrefix<<"Refusing update for " << rr->d_name << "/" << QType(rr->d_type).getName() << ": Data other than CNAME exists for the same name"<<endl; di.backend->abortTransaction(); return RCode::Refused; @@ -977,9 +980,12 @@ } for (const auto &rr : nonCnamesToAdd) { DNSResourceRecord rec; - di.backend->lookup(QType(QType::CNAME), rr->d_name); + di.backend->lookup(QType(QType::CNAME), rr->d_name, nullptr, di.id); while (di.backend->get(rec)) { if (rec.qtype == QType::CNAME && rr->d_type != QType::RRSIG) { + // leave database handle in a consistent state + while (di.backend->get(rec)) + ; L<<Logger::Warning<<msgPrefix<<"Refusing update for " << rr->d_name << "/" << QType(rr->d_type).getName() << ": CNAME exists for the same name"<<endl; di.backend->abortTransaction(); return RCode::Refused; @@ -990,7 +996,7 @@ if (nsRRtoDelete.size()) { vector<DNSResourceRecord> nsRRInZone; DNSResourceRecord rec; - di.backend->lookup(QType(QType::NS), di.zone); + di.backend->lookup(QType(QType::NS), di.zone, nullptr, di.id); while (di.backend->get(rec)) { nsRRInZone.push_back(rec); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/slavecommunicator.cc new/pdns-4.1.4/pdns/slavecommunicator.cc --- old/pdns-4.1.3/pdns/slavecommunicator.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/slavecommunicator.cc 2018-08-29 16:07:05.000000000 +0200 @@ -743,7 +743,16 @@ requeue.insert(di); } else { - L<<Logger::Debug<<"Got NOTIFY for "<<di.zone<<", going to check SOA serial"<<endl; + L<<Logger::Debug<<"Got NOTIFY for "<<di.zone<<", going to check SOA serial, our serial is "<<di.serial<<endl; + // We received a NOTIFY for a zone. This means at least one of the zone's master server is working. + // Therefore we delete the zone from the list of failed slave-checks to allow immediate checking. + const auto wasFailedDomain = d_failedSlaveRefresh.find(di.zone); + if (wasFailedDomain != d_failedSlaveRefresh.end()) { + L<<Logger::Debug<<"Got NOTIFY for "<<di.zone<<", removing zone from list of failed slave-checks and going to check SOA serial"<<endl; + d_failedSlaveRefresh.erase(di.zone); + } else { + L<<Logger::Debug<<"Got NOTIFY for "<<di.zone<<", going to check SOA serial"<<endl; + } rdomains.push_back(di); } } @@ -779,9 +788,11 @@ for(DomainInfo& di : rdomains) { const auto failed = d_failedSlaveRefresh.find(di.zone); - if (failed != d_failedSlaveRefresh.end() && now < failed->second.second ) + if (failed != d_failedSlaveRefresh.end() && now < failed->second.second ) { // If the domain has failed before and the time before the next check has not expired, skip this domain + L<<Logger::Debug<<"Zone '"<<di.zone<<"' is on the list of failed SOA checks. Skipping SOA checks until "<< failed->second.second<<endl; continue; + } std::vector<std::string> localaddr; SuckRequest sr; sr.domain=di.zone; @@ -877,19 +888,28 @@ if(!ssr.d_freshness.count(di.id)) { // If we don't have an answer for the domain uint64_t newCount = 1; + Lock l(&d_lock); const auto failedEntry = d_failedSlaveRefresh.find(di.zone); if (failedEntry != d_failedSlaveRefresh.end()) newCount = d_failedSlaveRefresh[di.zone].first + 1; time_t nextCheck = now + std::min(newCount * d_tickinterval, (uint64_t)::arg().asNum("soa-retry-default")); d_failedSlaveRefresh[di.zone] = {newCount, nextCheck}; - if (newCount == 1 || newCount % 10 == 0) - L<<Logger::Warning<<"Unable to retrieve SOA for "<<di.zone<<", this was the "<<(newCount == 1 ? "first" : std::to_string(newCount) + "th")<<" time."<<endl; + if (newCount == 1) { + L<<Logger::Warning<<"Unable to retrieve SOA for "<<di.zone<< + ", this was the first time. NOTE: For every subsequent failed SOA check the domain will be suspended from freshness checks for 'num-errors x "<< + d_tickinterval<<" seconds', with a maximum of "<<(uint64_t)::arg().asNum("soa-retry-default")<<" seconds. Skipping SOA checks until "<<nextCheck<<endl; + } else if (newCount % 10 == 0) { + L<<Logger::Warning<<"Unable to retrieve SOA for "<<di.zone<<", this was the "<<std::to_string(newCount)<<"th time. Skipping SOA checks until "<<nextCheck<<endl; + } continue; } - const auto wasFailedDomain = d_failedSlaveRefresh.find(di.zone); - if (wasFailedDomain != d_failedSlaveRefresh.end()) - d_failedSlaveRefresh.erase(di.zone); + { + Lock l(&d_lock); + const auto wasFailedDomain = d_failedSlaveRefresh.find(di.zone); + if (wasFailedDomain != d_failedSlaveRefresh.end()) + d_failedSlaveRefresh.erase(di.zone); + } uint32_t theirserial = ssr.d_freshness[di.id].theirSerial, ourserial = di.serial; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/test-iputils_hh.cc new/pdns-4.1.4/pdns/test-iputils_hh.cc --- old/pdns-4.1.3/pdns/test-iputils_hh.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/test-iputils_hh.cc 2018-08-29 16:07:05.000000000 +0200 @@ -60,8 +60,8 @@ BOOST_AUTO_TEST_CASE(test_ComboAddressCompare) { ComboAddress a, b; - memset(&a, 0, sizeof(a)); - memset(&b, 0, sizeof(b)); + a.reset(); + b.reset(); BOOST_CHECK(!(a<b)); BOOST_CHECK(!(a>b)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-4.1.3/pdns/ws-auth.cc new/pdns-4.1.4/pdns/ws-auth.cc --- old/pdns-4.1.3/pdns/ws-auth.cc 2018-05-24 14:52:33.000000000 +0200 +++ new/pdns-4.1.4/pdns/ws-auth.cc 2018-08-29 16:07:05.000000000 +0200 @@ -369,6 +369,9 @@ records.push_back(rr); } sort(records.begin(), records.end(), [](const DNSResourceRecord& a, const DNSResourceRecord& b) { + /* if you ever want to update this comparison function, + please be aware that you will also need to update the conditions in the code merging + the records and comments below */ if (a.qname == b.qname) { return b.qtype < a.qtype; } @@ -384,6 +387,9 @@ comments.push_back(comment); } sort(comments.begin(), comments.end(), [](const Comment& a, const Comment& b) { + /* if you ever want to update this comparison function, + please be aware that you will also need to update the conditions in the code merging + the records and comments below */ if (a.qname == b.qname) { return b.qtype < a.qtype; } @@ -402,7 +408,8 @@ auto cit = comments.begin(); while (rit != records.end() || cit != comments.end()) { - if (cit == comments.end() || (rit != records.end() && (cit->qname.toString() <= rit->qname.toString() || cit->qtype < rit->qtype || cit->qtype == rit->qtype))) { + // if you think this should be rit < cit instead of cit < rit, note the b < a instead of a < b in the sort comparison functions above + if (cit == comments.end() || (rit != records.end() && (rit->qname == cit->qname ? (cit->qtype < rit->qtype || cit->qtype == rit->qtype) : cit->qname < rit->qname))) { current_qname = rit->qname; current_qtype = rit->qtype; ttl = rit->ttl; @@ -1205,9 +1212,8 @@ static void checkDuplicateRecords(vector<DNSResourceRecord>& records) { sort(records.begin(), records.end(), [](const DNSResourceRecord& rec_a, const DNSResourceRecord& rec_b) -> bool { - return rec_a.qname.toString() > rec_b.qname.toString() || \ - rec_a.qtype.getCode() > rec_b.qtype.getCode() || \ - rec_a.content < rec_b.content; + /* we need _strict_ weak ordering */ + return std::tie(rec_a.qname, rec_a.qtype, rec_a.content) < std::tie(rec_b.qname, rec_b.qtype, rec_b.content); } ); DNSResourceRecord previous;
participants (1)
-
root