1. 31 Jan, 2018 1 commit
  2. 30 Jan, 2018 1 commit
  3. 26 Jan, 2018 3 commits
  4. 21 Jan, 2018 2 commits
  5. 20 Jan, 2018 2 commits
  6. 19 Jan, 2018 3 commits
  7. 15 Jan, 2018 3 commits
  8. 14 Jan, 2018 1 commit
  9. 07 Jan, 2018 1 commit
    • Simon Kelley's avatar
      Handle duplicate RRs in DNSSEC validation. · e5412459
      Simon Kelley authored
      RFC 4034 says:
        [RFC2181] specifies that an RRset is not allowed to contain duplicate
        records (multiple RRs with the same owner name, class, type, and
        RDATA).  Therefore, if an implementation detects duplicate RRs when
        putting the RRset in canonical form, it MUST treat this as a protocol
        error.  If the implementation chooses to handle this protocol error
        in the spirit of the robustness principle (being liberal in what it
        accepts), it MUST remove all but one of the duplicate RR(s) for the
        purposes of calculating the canonical form of the RRset.
      
      We chose to handle this robustly, having found at least one recursive
      server in the wild which returns duplicate NSEC records in the AUTHORITY
      section of an answer generated from a wildcard record. sort_rrset() is
      therefore modified to delete duplicate RRs which are detected almost
      for free during the bubble-sort process.
      
      Thanks to Toralf Förster for helping to diagnose this problem.
      e5412459
  10. 03 Jan, 2018 1 commit
  11. 02 Jan, 2018 1 commit
  12. 15 Dec, 2017 3 commits
  13. 06 Dec, 2017 2 commits
    • Simon Kelley's avatar
      Fix infinite retries in strict-order mode. · ef3d137a
      Simon Kelley authored
       If all configured dns servers return refused in
       response to a query; dnsmasq will end up in an infinite loop
       retransmitting the dns query resulting into high CPU load.
       Problem is caused by the dns refuse retransmission logic which does
       not check for the end of a dns server list iteration in strict mode.
       Having one configured dns server returning a refused reply easily
       triggers this problem in strict order mode. This was introduced in
       9396752c
      
       Thanks to Hans Dedecker <dedeckeh@gmail.com> for spotting this
       and the initial patch.
      ef3d137a
    • Simon Kelley's avatar
      Make 373e9173 compile without DNSSEC. · 8c707e1e
      Simon Kelley authored
      8c707e1e
  14. 02 Dec, 2017 2 commits
  15. 01 Dec, 2017 1 commit
  16. 16 Nov, 2017 1 commit
  17. 08 Nov, 2017 2 commits
  18. 06 Nov, 2017 1 commit
    • Petr Menšík's avatar
      Open inotify socket only when used. · 075366ad
      Petr Menšík authored
      Some of our Openstack users run quite large number of dnsmasq instances
      on single host. They started hitting default limit of inotify socket
      number on single system after upgrade to more recent version. System
      defaults of sysctl fs.inotify.max_user_instances is 128. They reached
      limit of 116 dnsmasq instances, then more instances failed to start.
      
      I was surprised they have any use case for such high number of
      instances. They use one dnsmasq for one virtual network.
      
      I found simple way to avoid hitting low system limit. They do not use
      resolv.conf for name server configuration or any dhcp hosts or options
      directory. Created inotify socket is never used in that case. Simple
      patch attached.
      
      I know we can raise inotify system limit. I think better is to not waste
      resources that are left unused.
      075366ad
  19. 31 Oct, 2017 2 commits
  20. 30 Oct, 2017 1 commit
  21. 28 Oct, 2017 5 commits
  22. 26 Oct, 2017 1 commit
    • Simon Kelley's avatar
      Fix caching logic for validated answers. · a6004d7f
      Simon Kelley authored
      The current logic is naive in the case that there is more than
      one RRset in an answer (Typically, when a non-CNAME query is answered
      by one or more CNAME RRs, and then then an answer RRset.)
      
      If all the RRsets validate, then they are cached and marked as validated,
      but if any RRset doesn't validate, then the AD flag is not set (good) and
      ALL the RRsets are cached marked as not validated.
      
      This breaks when, eg, the answer contains a validated CNAME, pointing
      to a non-validated answer. A subsequent query for the CNAME without do
      will get an answer with the AD flag wrongly reset, and worse, the same
      query with do will get a cached answer without RRSIGS, rather than
      being forwarded.
      
      The code now records the validation of individual RRsets and that
      is used to correctly set the "validated" bits in the cache entries.
      a6004d7f