Your message dated Tue, 20 Oct 2026 13:34:18 +0200
with message-id <[email protected]>
and subject line Re: Bug#1151376: pdns-recursor: only the first /etc/hosts line 
per name is  served, A or AAAA missing
has caused the Debian Bug report #1151376,
regarding pdns-recursor: only the first /etc/hosts line per name is  served, A 
or AAAA missing
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1151376: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1151376
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: pdns-recursor
Version: 4.8.8-1+deb12u1
Severity: normal
Tags: patch fixed-upstream

With export-etc-hosts enabled, the recursor in bookworm only serves the
first line of /etc/hosts for a name. If a name is listed with an IPv4 and
an IPv6 address on two lines, only one of the two record types is
answered.

Steps to reproduce (Debian 12 based system, pdns-recursor 4.8.8-1+deb12u1,
export-etc-hosts=yes):

  /etc/hosts:
    192.0.2.77     plain.test
    2001:db8::77   plain.test

  rec_control reload-zones
  dig +short @127.0.0.1 plain.test A      -> 192.0.2.77
  dig +short @127.0.0.1 plain.test AAAA   -> (empty)

With the two lines in the opposite order only the AAAA record is
answered. In 4.8.8 makeNameToIPZone() in reczones-helpers.cc creates a
new zone for each line and addToDomainMap() refuses to replace an
existing one ("Will not overwrite already loaded zone").

Upstream fixed this in 4.9.0, PowerDNS pull request 12203, commit
a867410a2183e64d6abe212c5abcac7cf8a95b6b "Allow multiple records with
same name for etc/hosts processing" (15 lines added, 2 removed, one
file). With upstream 5.4.7 both records of the example are answered.
Debian 13 should not be affected, because the fix is in all releases
since 4.9.0, but I have not tested the trixie package.

The patch applies cleanly to the 4.8.8 source. I checked this with
"patch --dry-run" against the rec-4.8.8 tag and did not build or run a
patched package. A patch in DEP-3 format is attached.

I know that 4.x is end of life upstream, so a fix has to come from
Debian. Could this be considered for a bookworm point release? I noticed
it in VyOS (a Debian 12 based router distribution), where DHCP and static
host mappings for the same name use different address families and only
one of them resolves. I am happy to test a patched package.
Description: Allow multiple records with the same name for /etc/hosts processing
 With export-etc-hosts enabled, the recursor only served the first line of
 /etc/hosts for a name. A name listed with an IPv4 and an IPv6 address on two
 lines got only the first one, so either the A or the AAAA record was missing.
 The records of the same name are now added to the same zone.
Author: Sten Spans <[email protected]>
Origin: upstream, https://github.com/PowerDNS/pdns/commit/a867410a2183e64d6abe212c5abcac7cf8a95b6b
Applied-Upstream: 4.9.0, https://github.com/PowerDNS/pdns/pull/12203
Forwarded: not-needed
Last-Update: 2026-10-20

 pdns/recursordist/reczones-helpers.cc | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/pdns/recursordist/reczones-helpers.cc b/pdns/recursordist/reczones-helpers.cc
index 8f613ac92fed..daee88e6ffd8 100644
--- a/pdns/recursordist/reczones-helpers.cc
+++ b/pdns/recursordist/reczones-helpers.cc
@@ -75,17 +75,30 @@ static void makeNameToIPZone(SyncRes::domainmap_t& newMap,
                              const ComboAddress& address,
                              Logr::log_t log)
 {
+  SyncRes::AuthDomain ad;
   DNSRecord dr;
+
   dr.d_name = hostname;
 
-  SyncRes::AuthDomain ad = makeSOAAndNSNodes(dr, "localhost.");
+  if (newMap.count(hostname) != 0) {
+    ad = newMap[hostname];
+  }
+  else {
+    ad = makeSOAAndNSNodes(dr, "localhost.");
+  }
 
   auto recType = address.isIPv6() ? QType::AAAA : QType::A;
   dr.d_type = recType;
+  dr.d_ttl = 86400;
   dr.d_content = DNSRecordContent::mastermake(recType, 1, address.toStringNoInterface());
   ad.d_records.insert(dr);
 
-  addToDomainMap(newMap, ad, dr.d_name, log);
+  if (newMap.count(hostname) != 0) {
+    newMap[ad.d_name] = ad;
+  }
+  else {
+    addToDomainMap(newMap, ad, dr.d_name, log);
+  }
 }
 
 static void makeIPToNamesZone(SyncRes::domainmap_t& newMap,

--- End Message ---
--- Begin Message ---
On Tue, Oct 20, 2026 at 12:03:20PM +0200, [email protected] wrote:
> I know that 4.x is end of life upstream, so a fix has to come from
> Debian. Could this be considered for a bookworm point release?

Debian bookworm has transitioned out of being the "stable" release, 
thus there a no further point releases. Please report bugs to the 
LTS project, see https://wiki.debian.org/LTS/FAQ#Where_can_bugs_be_reported.3F

Best,
Chris

--- End Message ---

Reply via email to