Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pdns for openSUSE:Factory checked in 
at 2021-02-09 21:16:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pdns (Old)
 and      /work/SRC/openSUSE:Factory/.pdns.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pdns"

Tue Feb  9 21:16:20 2021 rev:74 rq:870247 version:4.4.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/pdns/pdns.changes        2020-12-28 
14:51:27.379418093 +0100
+++ /work/SRC/openSUSE:Factory/.pdns.new.28504/pdns.changes     2021-02-09 
21:16:21.834780589 +0100
@@ -1,0 +2,17 @@
+Mon Feb  8 11:14:53 UTC 2021 - Michael Str??der <[email protected]>
+
+- Update to 4.4.1
+  * Improvements
+    - debian packaging update #9965
+    - dockerfiles: do not claim equivs-dummy is built from the pdns source 
package #9953
+    - Fix missing #include for gcc-11#9952
+    - lmdb: Do a mdb_readers_check to clean up stale readers on database load 
#9946
+  * Bug Fixes
+    - fix TCP answer counters #10008
+    - run deleteDomain() inside a transaction #10039
+    - lmdb: do not reuse backend that has seen corrupted data #9985
+    - lmdb: serialise LMDBBackend construction to ensure only a single schema 
upgrade is attempted #9949
+    - backport some asan/ubsan fixes #9923
+    - pdnsutil edit-zone: do not exit on ZoneParser exception #9912
+
+-------------------------------------------------------------------

Old:
----
  pdns-4.4.0.tar.bz2
  pdns-4.4.0.tar.bz2.sig

New:
----
  pdns-4.4.1.tar.bz2
  pdns-4.4.1.tar.bz2.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pdns.spec ++++++
--- /var/tmp/diff_new_pack.LJFG3W/_old  2021-02-09 21:16:22.558781412 +0100
+++ /var/tmp/diff_new_pack.LJFG3W/_new  2021-02-09 21:16:22.562781418 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package pdns
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -51,7 +51,7 @@
 %define services %{name}.service %{name}@.service %{?ixfrdist_services}
 
 Name:           pdns
-Version:        4.4.0
+Version:        4.4.1
 Release:        0
 Summary:        Authoritative-only nameserver
 License:        GPL-2.0-only

++++++ pdns-4.4.0.tar.bz2 -> pdns-4.4.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/configure new/pdns-4.4.1/configure
--- old/pdns-4.4.0/configure    2020-12-17 15:49:10.000000000 +0100
+++ new/pdns-4.4.1/configure    2021-02-06 23:45:15.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pdns 4.4.0.
+# Generated by GNU Autoconf 2.69 for pdns 4.4.1.
 #
 #
 # 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.4.0'
-PACKAGE_STRING='pdns 4.4.0'
+PACKAGE_VERSION='4.4.1'
+PACKAGE_STRING='pdns 4.4.1'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1632,7 +1632,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.4.0 to adapt to many kinds of systems.
+\`configure' configures pdns 4.4.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1703,7 +1703,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pdns 4.4.0:";;
+     short | recursive ) echo "Configuration of pdns 4.4.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1950,7 +1950,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pdns configure 4.4.0
+pdns configure 4.4.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2543,7 +2543,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.4.0, which was
+It was created by pdns $as_me 4.4.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3427,7 +3427,7 @@
 
 # Define the identity of the package.
  PACKAGE='pdns'
- VERSION='4.4.0'
+ VERSION='4.4.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -27412,7 +27412,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.4.0, which was
+This file was extended by pdns $as_me 4.4.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27478,7 +27478,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.4.0
+pdns config.status 4.4.1
 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.4.0/configure.ac new/pdns-4.4.1/configure.ac
--- old/pdns-4.4.0/configure.ac 2020-12-17 15:48:57.000000000 +0100
+++ new/pdns-4.4.1/configure.ac 2021-02-06 23:45:06.000000000 +0100
@@ -1,6 +1,6 @@
 AC_PREREQ([2.61])
 
-AC_INIT([pdns], [4.4.0])
+AC_INIT([pdns], [4.4.1])
 
 AC_CONFIG_SRCDIR([pdns/receiver.cc])
 AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/calidns.1 
new/pdns-4.4.1/docs/calidns.1
--- old/pdns-4.4.0/docs/calidns.1       2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/calidns.1       2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "CALIDNS" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "CALIDNS" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 calidns \- A DNS recursor testing tool
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnsbulktest.1 
new/pdns-4.4.1/docs/dnsbulktest.1
--- old/pdns-4.4.0/docs/dnsbulktest.1   2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dnsbulktest.1   2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSBULKTEST" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSBULKTEST" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnsbulktest \- A debugging tool for intermittent resolver failures
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnsgram.1 
new/pdns-4.4.1/docs/dnsgram.1
--- old/pdns-4.4.0/docs/dnsgram.1       2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dnsgram.1       2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSGRAM" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSGRAM" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnsgram \- A debugging tool for intermittent resolver failures
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnspcap2calidns.1 
new/pdns-4.4.1/docs/dnspcap2calidns.1
--- old/pdns-4.4.0/docs/dnspcap2calidns.1       2020-12-17 15:50:44.000000000 
+0100
+++ new/pdns-4.4.1/docs/dnspcap2calidns.1       2021-02-06 23:46:24.000000000 
+0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSPCAP2CALIDNS" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSPCAP2CALIDNS" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnspcap2calidns \- A tool to convert PCAPs of DNS traffic to calidns input
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnspcap2protobuf.1 
new/pdns-4.4.1/docs/dnspcap2protobuf.1
--- old/pdns-4.4.0/docs/dnspcap2protobuf.1      2020-12-17 15:50:44.000000000 
+0100
+++ new/pdns-4.4.1/docs/dnspcap2protobuf.1      2021-02-06 23:46:24.000000000 
+0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSPCAP2PROTOBUF" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSPCAP2PROTOBUF" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnspcap2protobuf \- A tool to convert PCAPs of DNS traffic to PowerDNS Protobuf
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnsreplay.1 
new/pdns-4.4.1/docs/dnsreplay.1
--- old/pdns-4.4.0/docs/dnsreplay.1     2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dnsreplay.1     2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSREPLAY" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSREPLAY" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnsreplay \- A PowerDNS nameserver debugging tool
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnsscan.1 
new/pdns-4.4.1/docs/dnsscan.1
--- old/pdns-4.4.0/docs/dnsscan.1       2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dnsscan.1       2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSSCAN" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSSCAN" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnsscan \- List the amount of queries per qtype in a pcap
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnsscope.1 
new/pdns-4.4.1/docs/dnsscope.1
--- old/pdns-4.4.0/docs/dnsscope.1      2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dnsscope.1      2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSSCOPE" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSSCOPE" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnsscope \- A PowerDNS nameserver debugging tool
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnstcpbench.1 
new/pdns-4.4.1/docs/dnstcpbench.1
--- old/pdns-4.4.0/docs/dnstcpbench.1   2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dnstcpbench.1   2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSTCPBENCH" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSTCPBENCH" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnstcpbench \- tool to perform TCP benchmarking of nameservers
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dnswasher.1 
new/pdns-4.4.1/docs/dnswasher.1
--- old/pdns-4.4.0/docs/dnswasher.1     2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dnswasher.1     2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DNSWASHER" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DNSWASHER" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dnswasher \- A PowerDNS nameserver debugging tool
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/dumresp.1 
new/pdns-4.4.1/docs/dumresp.1
--- old/pdns-4.4.0/docs/dumresp.1       2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/dumresp.1       2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "DUMRESP" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "DUMRESP" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 dumresp \- A dumb DNS responder
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/ixfrdist.1 
new/pdns-4.4.1/docs/ixfrdist.1
--- old/pdns-4.4.0/docs/ixfrdist.1      2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/ixfrdist.1      2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "IXFRDIST" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "IXFRDIST" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 ixfrdist \- An IXFR/AXFR-only server that re-distributes zones
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/ixfrdist.yml.5 
new/pdns-4.4.1/docs/ixfrdist.yml.5
--- old/pdns-4.4.0/docs/ixfrdist.yml.5  2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/ixfrdist.yml.5  2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "IXFRDIST.YML" "5" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "IXFRDIST.YML" "5" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 ixfrdist.yml \- The ixfrdist configuration file
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/ixplore.1 
new/pdns-4.4.1/docs/ixplore.1
--- old/pdns-4.4.0/docs/ixplore.1       2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/ixplore.1       2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "IXPLORE" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "IXPLORE" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 ixplore \- A tool that provides insights into IXFRs
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/nproxy.1 new/pdns-4.4.1/docs/nproxy.1
--- old/pdns-4.4.0/docs/nproxy.1        2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/nproxy.1        2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "NPROXY" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "NPROXY" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 nproxy \- DNS notification proxy
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/nsec3dig.1 
new/pdns-4.4.1/docs/nsec3dig.1
--- old/pdns-4.4.0/docs/nsec3dig.1      2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/nsec3dig.1      2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "NSEC3DIG" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "NSEC3DIG" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 nsec3dig \- Show and validate NSEC3 proofs
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/pdns_control.1 
new/pdns-4.4.1/docs/pdns_control.1
--- old/pdns-4.4.0/docs/pdns_control.1  2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/pdns_control.1  2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "PDNS_CONTROL" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "PDNS_CONTROL" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 pdns_control \- Control the PowerDNS nameserver
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/pdns_notify.1 
new/pdns-4.4.1/docs/pdns_notify.1
--- old/pdns-4.4.0/docs/pdns_notify.1   2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/pdns_notify.1   2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "PDNS_NOTIFY" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "PDNS_NOTIFY" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 pdns_notify \- A simple DNS NOTIFY sender
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/pdns_server.1 
new/pdns-4.4.1/docs/pdns_server.1
--- old/pdns-4.4.0/docs/pdns_server.1   2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/pdns_server.1   2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "PDNS_SERVER" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "PDNS_SERVER" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 pdns_server \- The PowerDNS Authoritative Namserver
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/pdnsutil.1 
new/pdns-4.4.1/docs/pdnsutil.1
--- old/pdns-4.4.0/docs/pdnsutil.1      2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/pdnsutil.1      2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "PDNSUTIL" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "PDNSUTIL" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 pdnsutil \- PowerDNS record and DNSSEC command and control
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/saxfr.1 new/pdns-4.4.1/docs/saxfr.1
--- old/pdns-4.4.0/docs/saxfr.1 2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/saxfr.1 2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "SAXFR" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "SAXFR" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 saxfr \- Perform AXFRs and show information about it
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/sdig.1 new/pdns-4.4.1/docs/sdig.1
--- old/pdns-4.4.0/docs/sdig.1  2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/sdig.1  2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "SDIG" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "SDIG" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 sdig \- Perform a DNS query and show the results
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/zone2json.1 
new/pdns-4.4.1/docs/zone2json.1
--- old/pdns-4.4.0/docs/zone2json.1     2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/zone2json.1     2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "ZONE2JSON" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "ZONE2JSON" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 zone2json \- convert BIND zones to JSON
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/zone2ldap.1 
new/pdns-4.4.1/docs/zone2ldap.1
--- old/pdns-4.4.0/docs/zone2ldap.1     2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/zone2ldap.1     2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "ZONE2LDAP" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "ZONE2LDAP" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 zone2ldap \- convert zonefiles to ldif
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/docs/zone2sql.1 
new/pdns-4.4.1/docs/zone2sql.1
--- old/pdns-4.4.0/docs/zone2sql.1      2020-12-17 15:50:44.000000000 +0100
+++ new/pdns-4.4.1/docs/zone2sql.1      2021-02-06 23:46:24.000000000 +0100
@@ -1,6 +1,6 @@
 .\" Man page generated from reStructuredText.
 .
-.TH "ZONE2SQL" "1" "Dec 17, 2020" "" "PowerDNS Authoritative Server"
+.TH "ZONE2SQL" "1" "Feb 06, 2021" "" "PowerDNS Authoritative Server"
 .SH NAME
 zone2sql \- convert BIND zones to SQL
 .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/ext/lmdb-safe/lmdb-safe.cc 
new/pdns-4.4.1/ext/lmdb-safe/lmdb-safe.cc
--- old/pdns-4.4.0/ext/lmdb-safe/lmdb-safe.cc   2020-11-16 17:30:04.000000000 
+0100
+++ new/pdns-4.4.1/ext/lmdb-safe/lmdb-safe.cc   2021-02-06 23:37:20.000000000 
+0100
@@ -46,6 +46,12 @@
     mdb_env_close(d_env);
     throw std::runtime_error("Unable to open database file 
"+std::string(fname)+": " + MDBError(rc));
   }
+
+  if ((flags & MDB_RDONLY) == 0) {
+    // Check for stale readers to prevent unbridled database growth.
+    // Only do this when in RW mode since it affects the file.
+    mdb_reader_check(d_env, nullptr);
+  }
 }
 
 void MDBEnv::incROTX()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/modules/geoipbackend/geoipbackend.cc 
new/pdns-4.4.1/modules/geoipbackend/geoipbackend.cc
--- old/pdns-4.4.0/modules/geoipbackend/geoipbackend.cc 2020-12-04 
10:27:51.000000000 +0100
+++ new/pdns-4.4.1/modules/geoipbackend/geoipbackend.cc 2021-02-06 
23:37:20.000000000 +0100
@@ -150,7 +150,8 @@
     global_custom_mapping = mapping.as<map<std::string, std::string>>();
   }
 
-  for(YAML::Node domain :  config["domains"]) {
+  for(YAML::const_iterator _domain = config["domains"].begin(); _domain != 
config["domains"].end(); _domain++) {
+    const auto& domain = *_domain;
     GeoIPDomain dom;
     dom.id = tmp_domains.size();
     dom.domain = DNSName(domain["domain"].as<string>());
@@ -160,8 +161,8 @@
       DNSName qname = DNSName(recs->first.as<string>());
       vector<GeoIPDNSResourceRecord> rrs;
 
-      for(YAML::Node item :  recs->second) {
-        YAML::const_iterator rec = item.begin();
+      for(YAML::const_iterator item = recs->second.begin(); item != 
recs->second.end(); item++) {
+        YAML::const_iterator rec = item->begin();
         GeoIPDNSResourceRecord rr;
         rr.domain_id = dom.id;
         rr.ttl = dom.ttl;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/modules/lmdbbackend/lmdbbackend.cc 
new/pdns-4.4.1/modules/lmdbbackend/lmdbbackend.cc
--- old/pdns-4.4.0/modules/lmdbbackend/lmdbbackend.cc   2020-12-17 
15:38:25.000000000 +0100
+++ new/pdns-4.4.1/modules/lmdbbackend/lmdbbackend.cc   2021-02-06 
23:37:20.000000000 +0100
@@ -32,6 +32,7 @@
 #include "pdns/logger.hh"
 #include "pdns/version.hh"
 #include "pdns/arguments.hh"
+#include "pdns/lock.hh"
 #include <boost/archive/binary_oarchive.hpp>
 #include <boost/archive/binary_iarchive.hpp>
 #include <boost/serialization/vector.hpp>
@@ -53,8 +54,14 @@
 // List the class version here. Default is 0
 BOOST_CLASS_VERSION(LMDBBackend::KeyDataDB, 1)
 
+static std::mutex s_lmdbOpenUpgradeLock;
+
 LMDBBackend::LMDBBackend(const std::string& suffix)
 {
+  // we lock to avoid a race condition when we do a schema upgrade during 
startup
+  // non-upgrade startups should be very cheap so this lock should not hurt 
performance
+  std::lock_guard<std::mutex> l(s_lmdbOpenUpgradeLock);
+
   setArgPrefix("lmdb"+suffix);
   
   string syncMode = toLower(getArg("sync-mode"));
@@ -544,6 +551,8 @@
 
 bool LMDBBackend::upgradeToSchemav3()
 {
+  g_log << Logger::Info<<"Upgrading LMDB schema"<<endl;
+
   for(auto i = 0; i < d_shards; i++) {
     string filename = getArg("filename")+"-"+std::to_string(i);
     if (rename(filename.c_str(), (filename+"-old").c_str()) < 0) {
@@ -772,20 +781,24 @@
       key = d_currentKey.get<string_view>();
     }
 
-    const auto& drr = d_currentrrset.at(d_currentrrsetpos++);
+    try {
+      const auto& drr = d_currentrrset.at(d_currentrrsetpos++);
+
+      rr.dr.d_name = compoundOrdername::getQName(key) + d_lookupdomain;
+      rr.domain_id = compoundOrdername::getDomainID(key);
+      rr.dr.d_type = compoundOrdername::getQType(key).getCode();
+      rr.dr.d_ttl = drr.ttl;
+      rr.dr.d_content = deserializeContentZR(rr.dr.d_type, rr.dr.d_name, 
drr.content);
+      rr.auth = drr.auth;
 
-    rr.dr.d_name = compoundOrdername::getQName(key) + d_lookupdomain;
-    rr.domain_id = compoundOrdername::getDomainID(key);
-    rr.dr.d_type = compoundOrdername::getQType(key).getCode();
-    rr.dr.d_ttl = drr.ttl;
-    rr.dr.d_content = deserializeContentZR(rr.dr.d_type, rr.dr.d_name, 
drr.content);
-    rr.auth = drr.auth;
-
-    if(d_currentrrsetpos >= d_currentrrset.size()) {
-      d_currentrrset.clear();
-      if(d_getcursor->next(d_currentKey, d_currentVal) || 
d_currentKey.get<StringView>().rfind(d_matchkey, 0) != 0) {
-        d_getcursor.reset();
+      if(d_currentrrsetpos >= d_currentrrset.size()) {
+        d_currentrrset.clear();
+        if(d_getcursor->next(d_currentKey, d_currentVal) || 
d_currentKey.get<StringView>().rfind(d_matchkey, 0) != 0) {
+          d_getcursor.reset();
+        }
       }
+    } catch (const std::exception &e) {
+      throw PDNSException(e.what());
     }
 
     break;
@@ -833,7 +846,10 @@
       serFromString(val.get<string_view>(), rr);
 
       if(rr.content.size() >= 5 * sizeof(uint32_t)) {
-        uint32_t serial = 
*reinterpret_cast<uint32_t*>(&rr.content[rr.content.size() - (5 * 
sizeof(uint32_t))]);
+        uint32_t serial;
+        // a SOA has five 32 bit fields, the first of which is the serial
+        // there are two variable length names before the serial, so we 
calculate from the back
+        memcpy(&serial, &rr.content[rr.content.size() - (5 * 
sizeof(uint32_t))], sizeof(serial));
         di.serial = ntohl(serial);
       }
     }
@@ -948,7 +964,10 @@
       serFromString(val.get<string_view>(), rr);
 
       if(rr.content.size() >= 5 * sizeof(uint32_t)) {
-        uint32_t serial = 
*reinterpret_cast<uint32_t*>(&rr.content[rr.content.size() - (5 * 
sizeof(uint32_t))]);
+        uint32_t serial;
+        // a SOA has five 32 bit fields, the first of which is the serial
+        // there are two variable length names before the serial, so we 
calculate from the back
+        memcpy(&serial, &rr.content[rr.content.size() - (5 * 
sizeof(uint32_t))], sizeof(serial));
         di.serial = ntohl(serial);
       }
     } else if(!include_disabled) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/modules/remotebackend/remotebackend.cc 
new/pdns-4.4.1/modules/remotebackend/remotebackend.cc
--- old/pdns-4.4.0/modules/remotebackend/remotebackend.cc       2020-11-16 
17:30:04.000000000 +0100
+++ new/pdns-4.4.1/modules/remotebackend/remotebackend.cc       2021-02-06 
23:37:20.000000000 +0100
@@ -607,7 +607,7 @@
    for(const auto& master: obj["masters"].array_items())
      di.masters.push_back(ComboAddress(master.string_value(), 53));
 
-   di.notified_serial = static_cast<unsigned int>(doubleFromJson(obj, 
"notified_serial", -1));
+   di.notified_serial = static_cast<unsigned int>(doubleFromJson(obj, 
"notified_serial", 0));
    di.serial = static_cast<unsigned int>(obj["serial"].number_value());
    di.last_check = static_cast<time_t>(obj["last_check"].number_value());
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/backends/gsql/gsqlbackend.cc 
new/pdns-4.4.1/pdns/backends/gsql/gsqlbackend.cc
--- old/pdns-4.4.0/pdns/backends/gsql/gsqlbackend.cc    2020-11-16 
17:30:04.000000000 +0100
+++ new/pdns-4.4.1/pdns/backends/gsql/gsqlbackend.cc    2021-02-06 
23:37:20.000000000 +0100
@@ -1328,6 +1328,10 @@
 
 bool GSQLBackend::deleteDomain(const DNSName &domain)
 {
+  if (!d_inTransaction) {
+    throw PDNSException("deleteDomain called outside of transaction");
+  }
+
   DomainInfo di;
   if (!getDomainInfo(domain, di)) {
     return false;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/effective_tld_names.dat 
new/pdns-4.4.1/pdns/effective_tld_names.dat
--- old/pdns-4.4.0/pdns/effective_tld_names.dat 2020-12-17 15:49:53.000000000 
+0100
+++ new/pdns-4.4.1/pdns/effective_tld_names.dat 2021-02-06 23:45:44.000000000 
+0100
@@ -6805,6 +6805,9 @@
 // xn--90ae ("bg", Bulgarian) : BG
 ????
 
+// xn--mgbcpq6gpa1a ("albahrain", Arabic) : BH
+??????????????
+
 // xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
 // Operated by .by registry
 ??????
@@ -6937,6 +6940,9 @@
 // xn--80ao21a ("Kaz", Kazakh) : KZ
 ??????
 
+// xn--q7ce6a ("Lao", Lao) : LA
+?????????
+
 // xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK
 // https://nic.lk
 ????????????
@@ -7062,7 +7068,13 @@
 xxx
 
 // ye : http://www.y.net.ye/services/domain_name.htm
-*.ye
+ye
+com.ye
+edu.ye
+gov.ye
+net.ye
+mil.ye
+org.ye
 
 // za : https://www.zadna.org.za/content/page/domain-information/
 ac.za
@@ -7111,7 +7123,7 @@
 
 // newGTLDs
 
-// List of new gTLDs imported from 
https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 
2020-12-11T13:40:43Z
+// List of new gTLDs imported from 
https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 
2020-12-21T16:35:44Z
 // This list is auto-generated, don't edit it manually.
 // aaa : 2015-02-26 American Automobile Association, Inc.
 aaa
@@ -7335,7 +7347,7 @@
 // avianca : 2015-01-08 Avianca Holdings S.A.
 avianca
 
-// aws : 2015-06-25 Amazon Registry Services, Inc.
+// aws : 2015-06-25 AWS Registry LLC
 aws
 
 // axa : 2013-12-19 AXA Group Operations SAS
@@ -10786,6 +10798,11 @@
 // Submitted by Apigee Security Team <[email protected]>
 apigee.io
 
+// Appspace : https://www.appspace.com
+// Submitted by Appspace Security Team <[email protected]>
+appspacehosted.com
+appspaceusercontent.com
+
 // Aptible : https://www.aptible.com/
 // Submitted by Thomas Orozco <[email protected]>
 on-aptible.com
@@ -10990,6 +11007,10 @@
 // Submitted by Mathilde Blanchemanche <[email protected]>
 clic2000.net
 
+// ClickRising : https://clickrising.com/
+// Submitted by Umut Gumeli <[email protected]>
+clickrising.net
+
 // Cloud66 : https://www.cloud66.com/
 // Submitted by Khash Sajadi <[email protected]>
 c66.me
@@ -11771,10 +11792,6 @@
 fastvps.site
 myfast.space
 
-// Featherhead : https://featherhead.xyz/
-// Submitted by Simon Menke <[email protected]>
-fhapp.xyz
-
 // Fedora : https://fedoraproject.org/
 // submitted by Patrick Uiterwijk <[email protected]>
 fedorainfracloud.org
@@ -11812,6 +11829,10 @@
 // Submitted by Chris Raynor <[email protected]>
 firebaseapp.com
 
+// Firewebkit : https://www.firewebkit.com
+// Submitted by Majid Qureshi <[email protected]>
+fireweb.app
+
 // FLAP : https://www.flap.cloud
 // Submitted by Louis Chemineau <[email protected]>
 flap.id
@@ -11843,6 +11864,10 @@
 // Submitted by Daniel Stone <[email protected]>
 freedesktop.org
 
+// freemyip.com : https://freemyip.com
+// Submitted by Cadence <[email protected]>
+freemyip.com
+
 // FunkFeuer - Verein zur F??rderung freier Netze : https://www.funkfeuer.at
 // Submitted by Daniel A. Maierhofer <[email protected]>
 wien.funkfeuer.at
@@ -11874,6 +11899,10 @@
 lab.ms
 cdn-edges.net
 
+// Ghost Foundation : https://ghost.org
+// Submitted by Matt Hanley <[email protected]>
+ghost.io
+
 // GitHub, Inc.
 // Submitted by Patrick Toomey <[email protected]>
 github.io
@@ -12096,6 +12125,14 @@
 // Submitted by Hannu Aronsson <[email protected]>
 iki.fi
 
+// Incsub, LLC: https://incsub.com/
+// Submitted by Aaron Edwards <[email protected]>
+smushcdn.com
+wphostedmail.com
+wpmucdn.com
+tempurl.host
+wpmudev.host
+
 // Individual Network Berlin e.V. : https://www.in-berlin.de/
 // Submitted by Christian Seitz <[email protected]>
 dyn-berlin.de
@@ -12306,6 +12343,11 @@
 // Submitted by DisposaBoy <[email protected]>
 oya.to
 
+// Katholieke Universiteit Leuven: https://www.kuleuven.be
+// Submitted by Abuse KU Leuven <[email protected]>
+kuleuven.cloud
+ezproxy.kuleuven.be
+
 // .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf
 co.krd
 edu.krd
@@ -12501,8 +12543,11 @@
 // Submitted by Paul Cammish <[email protected]>
 hostedpi.com
 customer.mythic-beasts.com
+caracal.mythic-beasts.com
+fentiger.mythic-beasts.com
 lynx.mythic-beasts.com
 ocelot.mythic-beasts.com
+oncilla.mythic-beasts.com
 onza.mythic-beasts.com
 sphinx.mythic-beasts.com
 vs.mythic-beasts.com
@@ -12797,6 +12842,11 @@
 // Submitted by Duarte Santos <[email protected]>
 outsystemscloud.com
 
+// OVHcloud: https://ovhcloud.com
+// Submitted by Vincent Cass?? <[email protected]>
+*.webpaas.ovh.net
+*.hosting.ovh.net
+
 // OwnProvider GmbH: http://www.ownprovider.com
 // Submitted by Jan Moennich <[email protected]>
 ownprovider.com
@@ -13072,6 +13122,10 @@
 // Submitted by Alex Bowers <[email protected]>
 myshopblocks.com
 
+// Shopify : https://www.shopify.com
+// Submitted by Alex Richter <[email protected]>
+myshopify.com
+
 // Shopit : https://www.shopitcommerce.com/
 // Submitted by Craig McMahon <[email protected]>
 shopitsite.com
@@ -13106,6 +13160,10 @@
 // Submitted by Aral Balkan <[email protected]>
 small-web.org
 
+// Snowplow Analytics : https://snowplowanalytics.com/
+// Submitted by Ian Streeter <[email protected]>
+try-snowplow.com
+
 // Stackhero : https://www.stackhero.io
 // Submitted by Adrien Gillon <[email protected]>
 stackhero-network.com
@@ -13154,11 +13212,6 @@
 // Submitted by Dan Miller <[email protected]>
 temp-dns.com
 
-// Swisscom Application Cloud: https://developer.swisscom.com
-// Submitted by Matthias.Winzeler <[email protected]>
-applicationcloud.io
-scapp.io
-
 // Symfony, SAS : https://symfony.com/
 // Submitted by Fabien Potencier <[email protected]>
 *.s5y.io
@@ -13227,6 +13280,11 @@
 azimuth.network
 tlon.network
 
+// Tor Project, Inc. : https://torproject.org
+// Submitted by Antoine Beaupr?? <[email protected]
+torproject.net
+pages.torproject.net
+
 // TownNews.com : http://www.townnews.com
 // Submitted by Dustin Ward <[email protected]>
 bloxcms.com
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/lua-record.cc 
new/pdns-4.4.1/pdns/lua-record.cc
--- old/pdns-4.4.0/pdns/lua-record.cc   2020-11-16 17:30:05.000000000 +0100
+++ new/pdns-4.4.1/pdns/lua-record.cc   2021-02-06 23:37:20.000000000 +0100
@@ -1,3 +1,4 @@
+#include <thread>
 #include <future>
 #include <mutex>
 #include <boost/format.hpp>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/pdnsutil.cc 
new/pdns-4.4.1/pdns/pdnsutil.cc
--- old/pdns-4.4.0/pdns/pdnsutil.cc     2020-12-01 09:46:50.000000000 +0100
+++ new/pdns-4.4.1/pdns/pdnsutil.cc     2021-02-06 23:37:20.000000000 +0100
@@ -819,8 +819,18 @@
     return EXIT_FAILURE;
   }
 
-  if(di.backend->deleteDomain(zone))
-    return EXIT_SUCCESS;
+  di.backend->startTransaction(zone, -1);
+  try {
+    if(di.backend->deleteDomain(zone)) {
+      di.backend->commitTransaction();
+      return EXIT_SUCCESS;
+    }
+  } catch (...) {
+    di.backend->abortTransaction();
+    throw;
+  }
+
+  di.backend->abortTransaction();
 
   cerr<<"Failed to delete domain '"<<zone<<"'"<<endl;;
   return EXIT_FAILURE;
@@ -1062,6 +1072,12 @@
     auto fnum = zpt.getLineNumAndFile();
     gotoline = fnum.second;
     goto reAsk;
+  }
+  catch(PDNSException& e) {
+    cerr<<"Problem: "<<e.reason<<" "<<zpt.getLineOfFile()<<endl;
+    auto fnum = zpt.getLineNumAndFile();
+    gotoline = fnum.second;
+    goto reAsk;
   }
 
   sort(post.begin(), post.end(), DNSRecord::prettyCompare);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/responsestats-auth.cc 
new/pdns-4.4.1/pdns/responsestats-auth.cc
--- old/pdns-4.4.0/pdns/responsestats-auth.cc   2020-11-16 17:30:05.000000000 
+0100
+++ new/pdns-4.4.1/pdns/responsestats-auth.cc   2021-02-06 23:37:20.000000000 
+0100
@@ -7,7 +7,7 @@
  *  Function that creates all the stats
  *  when udpOrTCP is true, it is udp
  */
-void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP) {
+void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP, bool last) {
   const string& buf=p.getString();
   static AtomicCounter &udpnumanswered=*S.getPointer("udp-answers");
   static AtomicCounter &udpnumanswered4=*S.getPointer("udp4-answers");
@@ -44,15 +44,20 @@
       udpbytesanswered6+=buf.length();
     }
   } else { //tcp
-    tcpnumanswered++;
     tcpbytesanswered+=buf.length();
     if(p.d_remote.sin4.sin_family==AF_INET) {
-      tcpnumanswered4++;
       tcpbytesanswered4+=buf.length();
     } else {
-      tcpnumanswered6++;
       tcpbytesanswered6+=buf.length();
     }
+    if(last) {
+     tcpnumanswered++;
+     if(p.d_remote.sin4.sin_family==AF_INET) {
+      tcpnumanswered4++;
+     } else {
+      tcpnumanswered6++;
+     }
+    }
   }
 
   submitResponse(p.qtype.getCode(), buf.length(), p.d.rcode, udpOrTCP);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/responsestats.hh 
new/pdns-4.4.1/pdns/responsestats.hh
--- old/pdns-4.4.0/pdns/responsestats.hh        2020-11-16 17:30:05.000000000 
+0100
+++ new/pdns-4.4.1/pdns/responsestats.hh        2021-02-06 23:37:20.000000000 
+0100
@@ -30,7 +30,7 @@
 public:
   ResponseStats();
 
-  void submitResponse(DNSPacket &p, bool udpOrTCP);
+  void submitResponse(DNSPacket &p, bool udpOrTCP, bool last=true);
   void submitResponse(uint16_t qtype, uint16_t respsize, bool udpOrTCP);
   void submitResponse(uint16_t qtype, uint16_t respsize, uint8_t rcode, bool 
udpOrTCP);
   map<uint16_t, uint64_t> getQTypeResponseCounts();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/tcpreceiver.cc 
new/pdns-4.4.1/pdns/tcpreceiver.cc
--- old/pdns-4.4.0/pdns/tcpreceiver.cc  2020-12-17 15:38:25.000000000 +0100
+++ new/pdns-4.4.1/pdns/tcpreceiver.cc  2021-02-06 23:37:20.000000000 +0100
@@ -168,9 +168,9 @@
   }
 }
 
-void TCPNameserver::sendPacket(std::unique_ptr<DNSPacket>& p, int outsock)
+void TCPNameserver::sendPacket(std::unique_ptr<DNSPacket>& p, int outsock, 
bool last)
 {
-  g_rs.submitResponse(*p, false);
+  g_rs.submitResponse(*p, false, last);
 
   uint16_t len=htons(p->getString().length());
   string buffer((const char*)&len, 2);
@@ -188,15 +188,6 @@
   throw NetworkError("Error reading DNS data from TCP client 
"+remote.toString()+": "+ae.what());
 }
 
-static void incTCPAnswerCount(const ComboAddress& remote)
-{
-  S.inc("tcp-answers");
-  if(remote.sin4.sin_family == AF_INET6)
-    S.inc("tcp6-answers");
-  else
-    S.inc("tcp4-answers");
-}
-
 static bool maxConnectionDurationReached(unsigned int maxConnectionDuration, 
time_t start, unsigned int& remainingTime)
 {
   if (maxConnectionDuration) {
@@ -301,14 +292,12 @@
         break;
       
       if(packet->qtype.getCode()==QType::AXFR) {
-        if(doAXFR(packet->qdomain, packet, fd))
-          incTCPAnswerCount(remote);
+        doAXFR(packet->qdomain, packet, fd);
         continue;
       }
 
       if(packet->qtype.getCode()==QType::IXFR) {
-        if(doIXFR(packet, fd))
-          incTCPAnswerCount(remote);
+        doIXFR(packet, fd);
         continue;
       }
 
@@ -597,7 +586,7 @@
   if(haveTSIGDetails && !tsigkeyname.empty())
     outpacket->setTSIGDetails(trc, tsigkeyname, tsigsecret, trc.d_mac); // 
first answer is 'normal'
   
-  sendPacket(outpacket, outsock);
+  sendPacket(outpacket, outsock, false);
   
   trc.d_mac = outpacket->d_trc.d_mac;
   outpacket = getFreshAXFRPacket(q);
@@ -865,7 +854,7 @@
         if(!outpacket->getRRS().empty()) {
           if(haveTSIGDetails && !tsigkeyname.empty())
             outpacket->setTSIGDetails(trc, tsigkeyname, tsigsecret, trc.d_mac, 
true);
-          sendPacket(outpacket, outsock);
+          sendPacket(outpacket, outsock, false);
           trc.d_mac=outpacket->d_trc.d_mac;
           outpacket=getFreshAXFRPacket(q);
         }
@@ -918,7 +907,7 @@
               if(!outpacket->getRRS().empty()) {
                 if(haveTSIGDetails && !tsigkeyname.empty())
                   outpacket->setTSIGDetails(trc, tsigkeyname, tsigsecret, 
trc.d_mac, true);
-                sendPacket(outpacket, outsock);
+                sendPacket(outpacket, outsock, false);
                 trc.d_mac=outpacket->d_trc.d_mac;
                 outpacket=getFreshAXFRPacket(q);
               }
@@ -952,7 +941,7 @@
           if(!outpacket->getRRS().empty()) {
             if(haveTSIGDetails && !tsigkeyname.empty())
               outpacket->setTSIGDetails(trc, tsigkeyname, tsigsecret, 
trc.d_mac, true); 
-            sendPacket(outpacket, outsock);
+            sendPacket(outpacket, outsock, false);
             trc.d_mac=outpacket->d_trc.d_mac;
             outpacket=getFreshAXFRPacket(q);
           }
@@ -973,7 +962,7 @@
     if(!outpacket->getRRS().empty()) {
       if(haveTSIGDetails && !tsigkeyname.empty())
         outpacket->setTSIGDetails(trc, tsigkeyname, tsigsecret, trc.d_mac, 
true); // first answer is 'normal'
-      sendPacket(outpacket, outsock);
+      sendPacket(outpacket, outsock, false);
       trc.d_mac=outpacket->d_trc.d_mac;
       outpacket=getFreshAXFRPacket(q);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/tcpreceiver.hh 
new/pdns-4.4.1/pdns/tcpreceiver.hh
--- old/pdns-4.4.0/pdns/tcpreceiver.hh  2020-11-30 04:03:53.000000000 +0100
+++ new/pdns-4.4.1/pdns/tcpreceiver.hh  2021-02-06 23:37:20.000000000 +0100
@@ -48,7 +48,7 @@
   unsigned int numTCPConnections();
 private:
 
-  static void sendPacket(std::unique_ptr<DNSPacket>& p, int outsock);
+  static void sendPacket(std::unique_ptr<DNSPacket>& p, int outsock, bool 
last=true);
   static int readLength(int fd, ComboAddress *remote);
   static void getQuestion(int fd, char *mesg, int pktlen, const ComboAddress& 
remote, unsigned int totalTime);
   static int doAXFR(const DNSName &target, std::unique_ptr<DNSPacket>& q, int 
outsock);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pdns-4.4.0/pdns/ws-auth.cc 
new/pdns-4.4.1/pdns/ws-auth.cc
--- old/pdns-4.4.0/pdns/ws-auth.cc      2020-12-14 09:07:22.000000000 +0100
+++ new/pdns-4.4.1/pdns/ws-auth.cc      2021-02-06 23:37:20.000000000 +0100
@@ -1793,8 +1793,17 @@
   }
   else if(req->method == "DELETE") {
     // delete domain
-    if(!di.backend->deleteDomain(zonename))
-      throw ApiException("Deleting domain '"+zonename.toString()+"' failed: 
backend delete failed/unsupported");
+
+    di.backend->startTransaction(zonename, -1);
+    try {
+      if(!di.backend->deleteDomain(zonename))
+        throw ApiException("Deleting domain '"+zonename.toString()+"' failed: 
backend delete failed/unsupported");
+
+      di.backend->commitTransaction();
+    } catch (...) {
+      di.backend->abortTransaction();
+      throw;
+    }
 
     // clear caches
     DNSSECKeeper::clearCaches(zonename);

Reply via email to