2
I Use This!
Very Low Activity

News

Analyzed 2 days ago. based on code collected 2 days ago.
Posted about 4 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.8.0 - 2021-08-13 * The geoip plugin gained a new feature flag 'ignore_ecs' at the map level, which can be used to ignore EDNS Client Subnet data for ... [More] all resources which use a given map. This is primarily for the use-case where the authserver has maps and resources which *do* use ECS data (thus ECS support can't be turned off globally), but one or more specific maps are intended explicitly to use only the DNS source addresses of the queries to make routing decisions. * Added more-pedantic error checking to a couple of strtoul uses (which were otherwise range validated numerically, but this will prevent oddball input cases from "working" in ways they shouldn't). * Added a missing regression test for DYN[AC] on a wildcard hostname * A few meta-updates for the Travis CI migration to .com. [Less]
Posted over 4 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.7.0 - 2021-06-08 * TCP threads now shut down faster on daemon stop/replace with active connections; previously they took up to 10s in a two-phased ... [More] shutdown approach, now they take up to 5s in a single phase. * TCP threads' timeout management fudge factor for coalescing timer events from multiple connections was increased from 100ms to 250ms. * The UDP send-side code is now non-blocking; it will immediately fail for lack of SO_SNDBUF space for the response instead of blocking up to ~257ms in an attempt to wait for for buffer availability. This has less chance of negatively impacting other requests waiting in the receive buffer during short spikes, at the cost of burning a little more CPU (to create answers which are quickly dropped on the output side) when buffers are overwhelmed with traffic. * Control sock proto now documented (imperfectly!) at docs/ControlSock.md * Control sock clients now send their version in REQ_INFO * Clearer messaging about certain corner-case configuration parser failures related to bad DNS escapes and $include files. * Bugfix for parsing zonefiles > 4GiB in size * Some possible race conditions in the testsuite which could cause false failures were fixed * Various internal refactorings and code QA improvements [Less]
Posted over 4 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.6.0 - 2021-02-24 * UDP DNS threads now idle much more efficiently when there's little to no network traffic arriving for them. Previously all such ... [More] threads woke up and re-executed recvmsg() at least once every ~3.1 seconds. Now they block indefinitely in a ppoll() call once they've been idle for ~257ms or longer. This reduces thread wakeup churn and thus power/cpu efficiency waste in the case of unused threads for extra listen addresses. It also reduces the worst corner case for daemon shutdown delays caused by UDP threads from ~3.1s to ~257ms. * TCP DNS threads now invoke rcu_quiescent_state() more often, which can help data reloads complete faster when there are many active TCP clients per thread. Previously they quiesced or went offline from RCU once per eventloop iteration, where one iteration could handle up to 1 pending request per client connection for many connections. Now they also quiesce once for each response sent. * SO_REUSEPORT_LB is now used for better UDP and TCP socket loadbalancing on BSDs which have this socket option available. * Zone and config files are now loaded more efficiently when there are many small ones, by switching to a malloc()+read() pattern instead of mmap() for files that are smaller than 1MB. mmap modifies process-global memory mappings once per file, which is expensive for a multi-threaded daemon loading many small files (especially in parallel!), so it's just not worth it unless the files are large-ish. [Less]
Posted over 4 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.5.2 - 2021-02-23 * Fixed a very rare potential inter-thread race on daemon shutdown due to a 'stop' or 'replace'. If a still-in-progress zone reload ... [More] operation had started just before the stop/replace, and happened to finish its job at nearly the exact same moment that the main thread was deallocating the zone data, both the reloader thread and the main thread could attempt to deallocate it at the same time. This happens after DNS listeners are stopped, but it's still an unclean crash instead of a clean termination. In the 'replace' case it would also cause the new daemon to get no stats data handoff thanks to the crash (but the new daemon would still successfully start). This issue hasn't ever been observed or reported in the wild, but I'm pretty sure it was possible with some extremely low probability. * The timeout for some control socket network operations between two daemons during a 'replace' takeover was extended from a fixed 13s to a fixed 37s. There is no perfect value here that balances all concerns without adding a ton of new code complexity, but this new value should be more robust in edge cases in practice. Making it configurable for those with known edge cases would be an easy next step! * Fixed an snprintf format bug that effectively limited stats outputs to 32-bit counters on x86_64 x32 ABI builds, even though they were being tracked as 64-bit internally. * Fixed a minor snprintf format bug in a log message about very early failures in zonefile processing, which probably wasn't causing any real bug on most platforms * Hopefully improved the reliability of the 011random.t test on hosts that are slower and/or have smaller default UDP receive buffers. * Added a docs and log warning about not relying on the default 'any' listen option without explicitly requesting it, for compat with future versions. * Relaxed a constraint in the socket handoff process between daemons during 'replace' in the interest of compat with future versions. * Added some additional pedantic safety measures to how TCP thread shutdowns are sequenced. * Improved the utility and/or accuracy of various error log messages * A few small code QA nits of no real consequence [Less]
Posted over 4 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.5.1 - 2021-02-10 * [Fixes marked with [BP] are also backported to 3.[234].x branches for convenience, but new releases from those branches are not ... [More] imminent] * Fixed issue #202, which was causing non-ANY UDPv4 listen sockets to fail to work correctly on FreeBSD 12.2 due to some new strictness in its parsing of sendmsg() msg_hdr contents since sometime after 12.0. [BP] * Fixed a bug which may have caused issues listening on global unicast UDPv6 addresses bound to loopback interfaces on some platforms. This was previously fixed for just FreeBSD in 2.4.2 and 3.0.0. The existing fix was just extended to all other platforms, as it probably should've been the first time around. [BP] * Fixed a bug that was causing escape sequences for binary bytes in domainnames to be emitted incorrectly in log message outputs. [BP] * A workaround was added for building on platforms which lack MSG_CMSG_CLOEXEC for SCM_RIGHTS socket handoff. * Some fatal error message outputs in the case of a failed "replace" operation were cleaned up for consistency. * A new configure argument "--with-buildinfo=FOO" was added so that packagers can build with a consistent version output encoded in the binary regardless of whether they're building directly from git. * Some docs, comments, and log message typos fixed by lintian * A few small code QA nits of no real consequence [Less]
Posted over 4 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.5.0 - 2021-01-11 * Multiple efficiency improvements for TCP conn handling, primarily aimed at reducing the per-conn memory footprint and malloc ... [More] churn. * Address (A/AAAA) records are now properly randomly shuffled each time they're emitted in responses. Previously we were doing a basic rotation of them in the supplied order. Shuffling has better load distribution characteristics in some scenarios. * NS responses now include true glue, when warranted, for qtype=NS at the root of a zone. This covers some important corner cases, including the root-of-dns delegated glue hints case. Previously, we were only attempting to attach glue to delegation responses, but never zone root qtype=NS responses. [Less]
Posted over 4 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.4.2 - 2021-01-11 * Several bugfixes are included here which came to light while reworking major chunks of the code in a 4.x prototype branch. All ... [More] are also backported to the 3.[23].x branches for packagers. * Fixed a few memory leaks that can happen in certain uncommon zonefile parsing failures related to TXT data, CAA data, and/or the zone filename itself * Fixed some missed response packet compression opportunities when the query name from the client was not already normalized to lower case. * Fixed some log message output bugs when complaining about SOA records * Added missing min_ttl/max_ttl clamping to RFC 3597 records' TTLs. * Fixed a corner case that could cause mixed TTLs in a single rrset, in the case of ACME challenges defined for the same name both statically in zone data and via gdnsdctl. * Fixed a bug which could force an RR's TTL to the value "1" if it were outside the range declared by ttl_min and ttl_max (default 5 and 3600000) and the non-default "zones_strict_data" (or -S flag) was enabled. * Configurations of plugins and zone data which allow DYNC to return address (A/AAAA) records are deprecated. They still work, but they emit a log warning message every time a zone is loaded which creates such a situation. [Less]
Posted almost 5 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.4.1 - 2020-11-20 * Bugfix for a rare TCP connection state management issue which can cause a TCP thread to consume excess CPU and prevent the clean exit of the daemon process on shutdown.
Posted almost 5 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.4.0 - 2020-11-19 * The default value of 'experimental_no_chain' has changed from false to true. This change affects on-the-wire DNS responses in the ... [More] case of a CNAME record which points to another record in the same zone. This is kind of an edge case for a semver minor version bump: this is not strictly a feature-add, but the behavioral change here is deep in the weeds most users will never see and has been about as widely tested as it can be without becoming a default like it is now. In case of issues, it can still be disabled by explicitly configuring it to false (which will also emit an error to syslog at startup pleading for bug reports about any such necessary case). This path seemed better than putting all the risks of this change in a future 4.0 release for the first time, where there would already be a ton of other core work built on top of it, making reversion much more difficult. * A new statistic 'tcp_acceptfail' was created to track all non-trivial failure returns from accept4(). * The daemon now makes a soft, non-fatal attempt to raise the soft limit on total file descriptors if internal calculations indicate it may be too small for the configuration (especially tcp listener config). It will complain to syslog on startup if it sees a potentially-bad fd limit situation that it can't fix due to the hard limits. * The TCP code now at least attempts to handle running into such a file descriptor limit more-gracefully by shutting down the most-idle of its older connections if possible, which is the same mechanism used by our existing internal limiter tcp_clients_per_thread. * Several sites in the code which may emit syslog errors driven by network input (e.g. recv() errors, accept4() errors, etc) now use a different logging call which applies some sanity-level ratelimiting to avoid excessive log spam. * max_edns_response[_v6] default values both changed to 1232, from previous defaults of 1410 and 1212, respectively. * The server now prefers the Linux IP_PMTUDISC_OMIT socket option over IP_PMTUDISC_DONT, when OMIT exists at compile time and works at runtime, which increases resilience against certain kinds of fragmentation attacks. [Less]
Posted about 5 years ago
Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/ 3.3.0 - 2020-09-09 * New Feature: 'skip_first' flag added for geoip resource definitions. This allows defining a backup geoip resource which shares the ... [More] same map as a primary resource, but always resolves to the second-best choice for a given client, as if the (dynamic) first choice were down. [Less]