Hallo, * Antoine Beaupré [Sun, Oct 13 2019, 09:32:49AM]: > > a) get all DNS records like ATM > > b) filter to IPv4 or IPv6 or both (depending on user preference in > > <ConnectProto> setting) > > c) auto-sort the list so that the first entry is v4 or v6 (depending on > > <ConnectProto> preference) and the following ones are alternativing > > d) start connecting on the first entry > > e) when nothing happened after N seconds, start a second connection attempt > > in parallel (using the second address, which is of different family then) > > f) if the second background connect attmpt fails after N, abort it, try the > > next DNS entry in the sequence, etc. etc. (while the first connect attempt > > is still ongoing, until <NetworkTimeout> seconds is reached) > > > > Questions: > > > > a) do you consider this reasonable enough? > > That seems reasonable, and actually pretty close to RFC8305. > > > b) would you like to become a tester for this, in case you can reproduce > > this regularly? (I can fake the test case but nothing beats the real > > thing) > > I can try! it can take up to a month for this situation to occur and I > haven't tried reproducing it manually, but I'm definitely happy to help.
Well, I am sorry for the delay. The idea was to get it done ASAP but it's not as easy as it seemed and I am short on spare time. I wanted to release a fixed version a week ago but I found more and more issues with legacy code. OTOH I think those issues has existed for years and nobody really noticed and my stress tests were not tense enough. So, the only thing I can offer ATM is a snapshot of unfinished version 3.3. I believe that this is the best version of apt-cacher-ng since 2014 but it still has a couple issues which I need to fix prior to release. And this will take some time. For now, feel free to build it from salsa ("fakeroot debian/rules binary" on the debian/experimental branch) or take a binary build from https://www.unix-ag.uni-kl.de/~bloch/acng/snap3.3/ . Receiving some feedback would be good, but I will first prepare a release to experimental anyway. Changelogs: * Make errors on purging of cache folder non-fatal (closes: #915082) * Recommends: ca-certificates (closes: #926282) [ POSSIBLY BREAKING CHANGES ] * the setting of cachedir and logdir in the built-in defaults is now configurable at build time (-DACNG_CACHE_DIR=... -DACNG_LOG_DIR=...) and this settings are also propagated into generated configuration examples * Dropping support for CMake prior to v3.1, dropped most custom variables for target locations, now relying on public CMake variables from GNUInstallDirs module; for details, see https://cmake.org/cmake/help/v3.2/module/GNUInstallDirs.html * Dropping support for OpenSSL before 1.0.2 [ FEATURES AND IMPROVEMENTS ] * Change of default network timeout to 40 seconds * Alternative fallback scheme for non-primary target connection attempts (with default timeout value of 4s, see FastTimeout setting). By default, this should help with unstable (blocking) IPv6 routing where IPv4 is still operational (Debian bug #942122) * Refactored DNS resolution&caching code, potential fix of rate connection problems * RequiresMountsFor directive in systemd service file example with additional remarks on keeping this in sync with the config (as in Debian bug #929035 and partly suggested in #942355) * PFilePattern extensions for Fedora 29 and 30, by Alan Jenkins, Debian bug #928270 (thanks!) * VFilePattern extension for Centos8, by Andy Lowther, Debian bug #944143 (thanks!) * added very explicit explanation on what "default value" means in the acng.conf example (Debian bug #855995) and also how to print it (with acngtool, Debian bug #914746) * Mirror database update * Configurable timeout for forced client disconnect on the last portion of data [ BUGFIXES ] * increased size of the decompression line buffer for config file reading (Debian bug #942634) * fixes potential data race in DNS resolution * Typo in INSTALL file (Debian bug #913593) * In Arch Linux database mirror list, rewrite https URLs to http since the official JSON query only returns https versions, also add a different source (from Debian bug #942844) * Generation of Sourceforge mirror redirectors list is fixed * Fixed an ancient bug where there last answered request might have been delayed in processing due to incorrect selection of MSG_MORE flag * Potential crash on shutdown prevented (misordered destructor sequence) [ INTERNAL REFACTORING ] * Overhauling code deployment, using a shared library (reducing installed file size by up to 20%) * dropped rfc2553emu code from old APT, using the platform abstraction from libevent instead * partial redesign for more singlethreaded IO operation * Disabled LTO by default, still crashing gold linker with certain option combinations * Moved lingering on CLOSE_WAIT sockets to the single main thread Best regards, Eduard.