Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package dnsmasq for openSUSE:Factory checked 
in at 2023-02-07 18:48:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dnsmasq (Old)
 and      /work/SRC/openSUSE:Factory/.dnsmasq.new.4462 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dnsmasq"

Tue Feb  7 18:48:19 2023 rev:91 rq:1063496 version:2.89

Changes:
--------
--- /work/SRC/openSUSE:Factory/dnsmasq/dnsmasq.changes  2022-12-28 
10:54:32.108110934 +0100
+++ /work/SRC/openSUSE:Factory/.dnsmasq.new.4462/dnsmasq.changes        
2023-02-07 18:48:32.246955072 +0100
@@ -1,0 +2,17 @@
+Mon Feb  6 09:27:27 UTC 2023 - Paolo Stivanin <[email protected]>
+
+- update to 2.89:
+  * Fix bug introduced in 2.88 (commit fe91134b) which can result
+    in corruption of the DNS cache internal data structures and
+    logging of "cache internal error". This has only been seen
+    in one place in the wild, and it took considerable effort
+    to even generate a test case to reproduce it, but there's
+    no way to be sure it won't strike, and the effect is to break
+    the cache badly. Installations with DNSSEC enabled are more
+    likely to see the problem, but not running DNSSEC does not
+    guarantee that it won't happen. Thanks to Timo van Roermund
+    for reporting the bug and for his great efforts in chasing
+    it down.
+- remove no longer needed rpmlintrc filters
+
+-------------------------------------------------------------------

Old:
----
  dnsmasq-2.88.tar.xz
  dnsmasq-2.88.tar.xz.asc
  dnsmasq-rpmlintrc

New:
----
  dnsmasq-2.89.tar.xz
  dnsmasq-2.89.tar.xz.asc

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

Other differences:
------------------
++++++ dnsmasq.spec ++++++
--- /var/tmp/diff_new_pack.Fknonf/_old  2023-02-07 18:48:32.734957695 +0100
+++ /var/tmp/diff_new_pack.Fknonf/_new  2023-02-07 18:48:32.738957716 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package dnsmasq
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -22,7 +22,7 @@
 %bcond_with tftp_user_package
 %endif
 Name:           dnsmasq
-Version:        2.88
+Version:        2.89
 Release:        0
 Summary:        DNS Forwarder and DHCP Server
 License:        GPL-2.0-only OR GPL-3.0-only
@@ -35,7 +35,6 @@
 Source4:        dnsmasq.service
 Source5:        rc.dnsmasq-suse
 Source6:        system-user-dnsmasq.conf
-Source8:        %{name}-rpmlintrc
 Patch0:         dnsmasq-groups.patch
 BuildRequires:  dbus-1-devel
 BuildRequires:  dos2unix
@@ -72,8 +71,7 @@
 server's leases.
 
 %prep
-%setup -q
-%patch0
+%autosetup -p1
 
 # Remove the executable bit from python example files to
 # avoid unwanted automatic dependencies

++++++ dnsmasq-2.88.tar.xz -> dnsmasq-2.89.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnsmasq-2.88/CHANGELOG new/dnsmasq-2.89/CHANGELOG
--- old/dnsmasq-2.88/CHANGELOG  2022-12-04 23:00:54.000000000 +0100
+++ new/dnsmasq-2.89/CHANGELOG  2023-02-02 21:24:24.000000000 +0100
@@ -1,7 +1,21 @@
+version 2.89
+        Fix bug introduced in 2.88 (commit fe91134b) which can result
+       in corruption of the DNS cache internal data structures and
+       logging of "cache internal error". This has only been seen
+       in one place in the wild, and it took considerable effort
+       to even generate a test case to reproduce it, but there's
+       no way to be sure it won't strike, and the effect is to break
+       the cache badly. Installations with DNSSEC enabled are more
+       likely to see the problem, but not running DNSSEC does not
+       guarantee that it won't happen. Thanks to Timo van Roermund
+       for reporting the bug and for his great efforts in chasing
+       it down.
+
+
 version 2.88
        Fix bug in --dynamic-host when an interface has /16 IPv4
-       address. Thanks to Mark Dietzer for spotting this.
-       
+       address. Thanks to Mark Dietzer for spotting this.
+
        Add --fast-dns-retry option. This gives dnsmasq the ability
        to originate retries for upstream DNS queries itself, rather
        than relying on the downstream client. This is most useful
@@ -12,12 +26,18 @@
        in the cache, but its time-to-live has expired, dnsmasq will
        return the data anyway. (It attempts to refresh the
        data with an upstream query after returning the stale data.)
-       This can improve speed and reliability. It comes 
+       This can improve speed and reliability. It comes
        at the expense of sometimes returning out-of-date data and
        less efficient cache utilisation, since old data cannot be
        flushed when its TTL expires, so the cache becomes
        strictly least-recently-used.
 
+       Add --port-limit option which allows tuning for robustness in
+       the face of some upstream network errors. Thanks to
+       Prashant Kumar Singh, Ravi Nagayach and Mike Danilov,
+       all of Amazon Web Services, for their efforts in developing this
+       and the stale-cache and fast-retry options.
+
        Make --hostsdir (but NOT --dhcp-hostsdir and --dhcp-optsdir)
        handle removal of whole files or entries within files.
        Thanks to Dominik Derigs for the initial patches for this.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnsmasq-2.88/VERSION new/dnsmasq-2.89/VERSION
--- old/dnsmasq-2.88/VERSION    2022-12-04 23:00:54.000000000 +0100
+++ new/dnsmasq-2.89/VERSION    2023-02-02 21:24:24.000000000 +0100
@@ -1 +1 @@
- (HEAD -> master, tag: v2.88)
+ (HEAD -> master, tag: v2.89, origin/master, origin/HEAD)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnsmasq-2.88/dnsmasq.conf.example 
new/dnsmasq-2.89/dnsmasq.conf.example
--- old/dnsmasq-2.88/dnsmasq.conf.example       2022-12-04 23:00:54.000000000 
+0100
+++ new/dnsmasq-2.89/dnsmasq.conf.example       2023-02-02 21:24:24.000000000 
+0100
@@ -394,7 +394,7 @@
 
 # The following DHCP options set up dnsmasq in the same way as is specified
 # for the ISC dhcpcd in
-# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
+# 
https://web.archive.org/web/20040313070105/http://us1.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
 # adapted for a typical dnsmasq installation where the host running
 # dnsmasq is also the host running samba.
 # you may want to uncomment some or all of them if you use
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnsmasq-2.88/man/dnsmasq.8 
new/dnsmasq-2.89/man/dnsmasq.8
--- old/dnsmasq-2.88/man/dnsmasq.8      2022-12-04 23:00:54.000000000 +0100
+++ new/dnsmasq-2.89/man/dnsmasq.8      2023-02-02 21:24:24.000000000 +0100
@@ -2215,6 +2215,20 @@
 
 and /share/ads-domains.gz containing a compressed
 list of ad server domains will save disk space with large ad-server blocklists.
+.TP
+.B --no-ident
+Do not respond to class CHAOS and type TXT in domain bind queries.
+
+Without this option being set, the cache statistics are also available in the
+DNS as answers to queries of class CHAOS and type TXT in domain bind. The 
domain
+names are cachesize.bind, insertions.bind, evictions.bind, misses.bind,
+hits.bind, auth.bind and servers.bind unless disabled at compile-time. An
+example command to query this, using the
+.B dig
+utility would be
+
+dig +short chaos txt cachesize.bind
+
 .SH CONFIG FILE
 At startup, dnsmasq reads
 .I /etc/dnsmasq.conf,
@@ -2264,15 +2278,6 @@
 mode or when full logging is enabled (\fB--log-queries\fP), a complete dump of 
the
 contents of the cache is made. 
 
-The cache statistics are also available in the DNS as answers to 
-queries of class CHAOS and type TXT in domain bind. The domain names are 
cachesize.bind, insertions.bind, evictions.bind, 
-misses.bind, hits.bind, auth.bind and servers.bind. An example command to 
query this, using the 
-.B dig
-utility would be
-
-dig +short chaos txt cachesize.bind
-
-.PP 
 When it receives SIGUSR2 and it is logging direct to a file (see
 .B --log-facility
 ) 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnsmasq-2.88/src/cache.c new/dnsmasq-2.89/src/cache.c
--- old/dnsmasq-2.88/src/cache.c        2022-12-04 23:00:54.000000000 +0100
+++ new/dnsmasq-2.89/src/cache.c        2023-02-02 21:24:24.000000000 +0100
@@ -28,6 +28,7 @@
 static void make_non_terminals(struct crec *source);
 static struct crec *really_insert(char *name, union all_addr *addr, unsigned 
short class,
                                  time_t now,  unsigned long ttl, unsigned int 
flags);
+static void dump_cache_entry(struct crec *cache, time_t now);
 
 /* type->string mapping: this is also used by the name-hash function as a 
mixing table. */
 /* taken from 
https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml */
@@ -235,19 +236,23 @@
 
   char *name = cache_get_name(crecp);
   struct crec **up = hash_bucket(name);
-
-  if (!(crecp->flags & F_REVERSE))
+  unsigned int flags = crecp->flags & (F_IMMORTAL | F_REVERSE);
+  
+  if (!(flags & F_REVERSE))
     {
       while (*up && ((*up)->flags & F_REVERSE))
        up = &((*up)->hash_next); 
       
-      if (crecp->flags & F_IMMORTAL)
+      if (flags & F_IMMORTAL)
        while (*up && !((*up)->flags & F_IMMORTAL))
          up = &((*up)->hash_next);
     }
 
-  /* Preserve order when inserting the same name multiple times. */
-  while (*up && hostname_isequal(cache_get_name(*up), name))
+  /* Preserve order when inserting the same name multiple times.
+     Do not mess up the flag invariants. */
+  while (*up &&
+        hostname_isequal(cache_get_name(*up), name) &&
+        flags == ((*up)->flags & (F_IMMORTAL | F_REVERSE)))
     up = &((*up)->hash_next);
   
   crecp->hash_next = *up;
@@ -594,7 +599,7 @@
   struct crec *new, *target_crec = NULL;
   union bigname *big_name = NULL;
   int freed_all = (flags & F_REVERSE);
-  int free_avail = 0;
+  struct crec *free_avail = NULL;
   unsigned int target_uid;
   
   /* if previous insertion failed give up now. */
@@ -642,7 +647,7 @@
       
       /* Free entry at end of LRU list, use it. */
       if (!(new->flags & (F_FORWARD | F_REVERSE)))
-       break;
+       break; 
 
       /* End of LRU list is still in use: if we didn't scan all the hash
         chains for expired entries do that now. If we already tried that
@@ -654,12 +659,9 @@
         insert. Once in this state, all inserts will probably fail. */
       if (free_avail)
        {
-         static int warned = 0;
-         if (!warned)
-           {
-             my_syslog(LOG_ERR, _("Internal error in cache."));
-             warned = 1;
-           }
+         my_syslog(LOG_ERR, _("Internal error in cache."));
+         /* Log the entry we tried to delete. */
+         dump_cache_entry(free_avail, now);
          insert_error = 1;
          return NULL;
        }
@@ -667,13 +669,13 @@
       if (freed_all)
        {
          /* For DNSSEC records, uid holds class. */
-         free_avail = 1; /* Must be free space now. */
+         free_avail = new; /* Must be free space now. */
          
          /* condition valid when stale-caching */
          if (difftime(now, new->ttd) < 0)
            daemon->metrics[METRIC_DNS_CACHE_LIVE_FREED]++;
          
-         cache_scan_free(cache_get_name(new), &new->addr, new->uid, now, 
new->flags, NULL, NULL);
+         cache_scan_free(cache_get_name(new), &new->addr, new->uid, now, 
new->flags, NULL, NULL); 
        }
       else
        {
@@ -1080,7 +1082,6 @@
      the array rhash, hashed on address. Note that rhash and the values
      in ->next are only valid  whilst reading hosts files: the buckets are
      then freed, and the ->next pointer used for other things. 
-
      Only insert each unique address once into this hashing structure.
 
      This complexity avoids O(n^2) divergent CPU use whilst reading
@@ -1760,6 +1761,94 @@
   return name;
 }
 
+static void dump_cache_entry(struct crec *cache, time_t now)
+{
+  (void)now;
+  static char *buff = NULL;
+  
+  char *p, *t = " ";
+  char *a = daemon->addrbuff, *n = cache_get_name(cache);
+
+  /* String length is limited below */
+  if (!buff && !(buff = whine_malloc(150)))
+    return;
+  
+  p = buff;
+  
+  *a = 0;
+  if (strlen(n) == 0 && !(cache->flags & F_REVERSE))
+    n = "<Root>";
+  p += sprintf(p, "%-30.30s ", sanitise(n));
+  if ((cache->flags & F_CNAME) && !is_outdated_cname_pointer(cache))
+    a = sanitise(cache_get_cname_target(cache));
+  else if ((cache->flags & F_SRV) && !(cache->flags & F_NEG))
+    {
+      int targetlen = cache->addr.srv.targetlen;
+      ssize_t len = sprintf(a, "%u %u %u ", cache->addr.srv.priority,
+                           cache->addr.srv.weight, cache->addr.srv.srvport);
+      
+      if (targetlen > (40 - len))
+       targetlen = 40 - len;
+      blockdata_retrieve(cache->addr.srv.target, targetlen, a + len);
+      a[len + targetlen] = 0;          
+    }
+#ifdef HAVE_DNSSEC
+  else if (cache->flags & F_DS)
+    {
+      if (!(cache->flags & F_NEG))
+       sprintf(a, "%5u %3u %3u", cache->addr.ds.keytag,
+               cache->addr.ds.algo, cache->addr.ds.digest);
+    }
+  else if (cache->flags & F_DNSKEY)
+    sprintf(a, "%5u %3u %3u", cache->addr.key.keytag,
+           cache->addr.key.algo, cache->addr.key.flags);
+#endif
+  else if (!(cache->flags & F_NEG) || !(cache->flags & F_FORWARD))
+    { 
+      a = daemon->addrbuff;
+      if (cache->flags & F_IPV4)
+       inet_ntop(AF_INET, &cache->addr, a, ADDRSTRLEN);
+      else if (cache->flags & F_IPV6)
+       inet_ntop(AF_INET6, &cache->addr, a, ADDRSTRLEN);
+    }
+  
+  if (cache->flags & F_IPV4)
+    t = "4";
+  else if (cache->flags & F_IPV6)
+    t = "6";
+  else if (cache->flags & F_CNAME)
+    t = "C";
+  else if (cache->flags & F_SRV)
+    t = "V";
+#ifdef HAVE_DNSSEC
+  else if (cache->flags & F_DS)
+    t = "S";
+  else if (cache->flags & F_DNSKEY)
+    t = "K";
+#endif
+  else if (!(cache->flags & F_NXDOMAIN)) /* non-terminal */
+    t = "!";
+  
+  p += sprintf(p, "%-40.40s %s%s%s%s%s%s%s%s%s%s ", a, t,
+              cache->flags & F_FORWARD ? "F" : " ",
+              cache->flags & F_REVERSE ? "R" : " ",
+              cache->flags & F_IMMORTAL ? "I" : " ",
+              cache->flags & F_DHCP ? "D" : " ",
+              cache->flags & F_NEG ? "N" : " ",
+              cache->flags & F_NXDOMAIN ? "X" : " ",
+              cache->flags & F_HOSTS ? "H" : " ",
+              cache->flags & F_CONFIG ? "C" : " ",
+              cache->flags & F_DNSSECOK ? "V" : " ");
+#ifdef HAVE_BROKEN_RTC
+  p += sprintf(p, "%-24lu", cache->flags & F_IMMORTAL ? 0: (unsigned 
long)(cache->ttd - now));
+#else
+  p += sprintf(p, "%-24.24s", cache->flags & F_IMMORTAL ? "" : 
ctime(&(cache->ttd)));
+#endif
+  if(cache->flags & (F_HOSTS | F_CONFIG) && cache->uid > 0)
+    p += sprintf(p, " %-40.40s", record_source(cache->uid));
+  
+  my_syslog(LOG_INFO, "%s", buff);
+}
 
 void dump_cache(time_t now)
 {
@@ -1807,90 +1896,14 @@
 
   if (option_bool(OPT_DEBUG) || option_bool(OPT_LOG))
     {
-      struct crec *cache ;
+      struct crec *cache;
       int i;
       my_syslog(LOG_INFO, "Host                           Address              
                    Flags      Expires                  Source");
       my_syslog(LOG_INFO, "------------------------------ 
---------------------------------------- ---------- ------------------------ 
------------");
     
       for (i=0; i<hash_size; i++)
        for (cache = hash_table[i]; cache; cache = cache->hash_next)
-         {
-           char *t = " ";
-           char *a = daemon->addrbuff, *p = daemon->namebuff, *n = 
cache_get_name(cache);
-           *a = 0;
-           if (strlen(n) == 0 && !(cache->flags & F_REVERSE))
-             n = "<Root>";
-           p += sprintf(p, "%-30.30s ", sanitise(n));
-           if ((cache->flags & F_CNAME) && !is_outdated_cname_pointer(cache))
-             a = sanitise(cache_get_cname_target(cache));
-           else if ((cache->flags & F_SRV) && !(cache->flags & F_NEG))
-             {
-               int targetlen = cache->addr.srv.targetlen;
-               ssize_t len = sprintf(a, "%u %u %u ", cache->addr.srv.priority,
-                                     cache->addr.srv.weight, 
cache->addr.srv.srvport);
-
-               if (targetlen > (40 - len))
-                 targetlen = 40 - len;
-               blockdata_retrieve(cache->addr.srv.target, targetlen, a + len);
-               a[len + targetlen] = 0;         
-             }
-#ifdef HAVE_DNSSEC
-           else if (cache->flags & F_DS)
-             {
-               if (!(cache->flags & F_NEG))
-                 sprintf(a, "%5u %3u %3u", cache->addr.ds.keytag,
-                         cache->addr.ds.algo, cache->addr.ds.digest);
-             }
-           else if (cache->flags & F_DNSKEY)
-             sprintf(a, "%5u %3u %3u", cache->addr.key.keytag,
-                     cache->addr.key.algo, cache->addr.key.flags);
-#endif
-           else if (!(cache->flags & F_NEG) || !(cache->flags & F_FORWARD))
-             { 
-               a = daemon->addrbuff;
-               if (cache->flags & F_IPV4)
-                 inet_ntop(AF_INET, &cache->addr, a, ADDRSTRLEN);
-               else if (cache->flags & F_IPV6)
-                 inet_ntop(AF_INET6, &cache->addr, a, ADDRSTRLEN);
-             }
-
-           if (cache->flags & F_IPV4)
-             t = "4";
-           else if (cache->flags & F_IPV6)
-             t = "6";
-           else if (cache->flags & F_CNAME)
-             t = "C";
-           else if (cache->flags & F_SRV)
-             t = "V";
-#ifdef HAVE_DNSSEC
-           else if (cache->flags & F_DS)
-             t = "S";
-           else if (cache->flags & F_DNSKEY)
-             t = "K";
-#endif
-           else /* non-terminal */
-             t = "!";
-
-           p += sprintf(p, "%-40.40s %s%s%s%s%s%s%s%s%s%s ", a, t,
-                        cache->flags & F_FORWARD ? "F" : " ",
-                        cache->flags & F_REVERSE ? "R" : " ",
-                        cache->flags & F_IMMORTAL ? "I" : " ",
-                        cache->flags & F_DHCP ? "D" : " ",
-                        cache->flags & F_NEG ? "N" : " ",
-                        cache->flags & F_NXDOMAIN ? "X" : " ",
-                        cache->flags & F_HOSTS ? "H" : " ",
-                        cache->flags & F_CONFIG ? "C" : " ",
-                        cache->flags & F_DNSSECOK ? "V" : " ");
-#ifdef HAVE_BROKEN_RTC
-           p += sprintf(p, "%-24lu", cache->flags & F_IMMORTAL ? 0: (unsigned 
long)(cache->ttd - now));
-#else
-           p += sprintf(p, "%-24.24s", cache->flags & F_IMMORTAL ? "" : 
ctime(&(cache->ttd)));
-#endif
-           if(cache->flags & (F_HOSTS | F_CONFIG) && cache->uid > 0)
-               p += sprintf(p, " %s", record_source(cache->uid));
-
-           my_syslog(LOG_INFO, "%s", daemon->namebuff);
-         }
+         dump_cache_entry(cache, now);
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnsmasq-2.88/src/dnsmasq.h 
new/dnsmasq-2.89/src/dnsmasq.h
--- old/dnsmasq-2.88/src/dnsmasq.h      2022-12-04 23:00:54.000000000 +0100
+++ new/dnsmasq-2.89/src/dnsmasq.h      2023-02-02 21:24:24.000000000 +0100
@@ -281,7 +281,8 @@
 #define OPT_STRIP_ECS      69
 #define OPT_STRIP_MAC      70
 #define OPT_NORR           71
-#define OPT_LAST           72
+#define OPT_NO_IDENT       72
+#define OPT_LAST           73
 
 #define OPTION_BITS (sizeof(unsigned int)*8)
 #define OPTION_SIZE ( (OPT_LAST/OPTION_BITS)+((OPT_LAST%OPTION_BITS)!=0) )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnsmasq-2.88/src/option.c 
new/dnsmasq-2.89/src/option.c
--- old/dnsmasq-2.88/src/option.c       2022-12-04 23:00:54.000000000 +0100
+++ new/dnsmasq-2.89/src/option.c       2023-02-02 21:24:24.000000000 +0100
@@ -185,6 +185,7 @@
 #define LOPT_FAST_RETRY    376
 #define LOPT_STALE_CACHE   377
 #define LOPT_NORR          378
+#define LOPT_NO_IDENT      379
 
 #ifdef HAVE_GETOPT_LONG
 static const struct option opts[] =  
@@ -374,6 +375,7 @@
     { "port-limit", 1, 0, LOPT_RANDPORT_LIM },
     { "fast-dns-retry", 2, 0, LOPT_FAST_RETRY },
     { "use-stale-cache", 2, 0 , LOPT_STALE_CACHE },
+    { "no-ident", 0, 0, LOPT_NO_IDENT },
     { NULL, 0, 0, 0 }
   };
 
@@ -570,6 +572,7 @@
   { LOPT_UMBRELLA, ARG_ONE, "[=<optspec>]", gettext_noop("Send Cisco Umbrella 
identifiers including remote IP."), NULL },
   { LOPT_QUIET_TFTP, OPT_QUIET_TFTP, NULL, gettext_noop("Do not log routine 
TFTP."), NULL },
   { LOPT_NORR, OPT_NORR, NULL, gettext_noop("Suppress round-robin ordering of 
DNS records."), NULL },
+  { LOPT_NO_IDENT, OPT_NO_IDENT, NULL, gettext_noop("Do not add CHAOS TXT 
records."), NULL },
   { 0, 0, NULL, NULL, NULL }
 }; 
 
@@ -5757,21 +5760,6 @@
   daemon->randport_limit = 1;
   daemon->host_index = SRC_AH;
   
-#ifndef NO_ID
-  add_txt("version.bind", "dnsmasq-" VERSION, 0 );
-  add_txt("authors.bind", "Simon Kelley", 0);
-  add_txt("copyright.bind", COPYRIGHT, 0);
-  add_txt("cachesize.bind", NULL, TXT_STAT_CACHESIZE);
-  add_txt("insertions.bind", NULL, TXT_STAT_INSERTS);
-  add_txt("evictions.bind", NULL, TXT_STAT_EVICTIONS);
-  add_txt("misses.bind", NULL, TXT_STAT_MISSES);
-  add_txt("hits.bind", NULL, TXT_STAT_HITS);
-#ifdef HAVE_AUTH
-  add_txt("auth.bind", NULL, TXT_STAT_AUTH);
-#endif
-  add_txt("servers.bind", NULL, TXT_STAT_SERVERS);
-#endif
-  
   /* See comment above make_servers(). Optimises server-read code. */
   mark_servers(0);
   
@@ -5869,6 +5857,25 @@
   else
     one_file(CONFFILE, LOPT_CONF_OPT);
 
+  /* Add TXT records if wanted */
+#ifndef NO_ID
+  if (!option_bool(OPT_NO_IDENT))
+    {
+      add_txt("version.bind", "dnsmasq-" VERSION, 0 );
+      add_txt("authors.bind", "Simon Kelley", 0);
+      add_txt("copyright.bind", COPYRIGHT, 0);
+      add_txt("cachesize.bind", NULL, TXT_STAT_CACHESIZE);
+      add_txt("insertions.bind", NULL, TXT_STAT_INSERTS);
+      add_txt("evictions.bind", NULL, TXT_STAT_EVICTIONS);
+      add_txt("misses.bind", NULL, TXT_STAT_MISSES);
+      add_txt("hits.bind", NULL, TXT_STAT_HITS);
+#ifdef HAVE_AUTH
+      add_txt("auth.bind", NULL, TXT_STAT_AUTH);
+#endif
+      add_txt("servers.bind", NULL, TXT_STAT_SERVERS);
+    }
+#endif
+
   /* port might not be known when the address is parsed - fill in here */
   if (daemon->servers)
     {

++++++ dnsmasq-groups.patch ++++++
--- /var/tmp/diff_new_pack.Fknonf/_old  2023-02-07 18:48:33.054959415 +0100
+++ /var/tmp/diff_new_pack.Fknonf/_new  2023-02-07 18:48:33.058959436 +0100
@@ -1,5 +1,5 @@
---- src/dnsmasq.c.orig
-+++ src/dnsmasq.c
+--- a/src/dnsmasq.c.orig
++++ b/src/dnsmasq.c
 @@ -581,11 +581,10 @@ int main (int argc, char **argv)
    if (!option_bool(OPT_DEBUG) && getuid() == 0)   
      {

Reply via email to