]> git.saurik.com Git - apt.git/commitdiff
allow getaddrinfo flag AI_ADDRCONFIG to be disabled
authorDavid Kalnischkies <david@kalnischkies.de>
Tue, 3 Nov 2015 15:05:14 +0000 (16:05 +0100)
committerDavid Kalnischkies <david@kalnischkies.de>
Wed, 4 Nov 2015 17:42:28 +0000 (18:42 +0100)
This flags is generally handy to avoid having to deal with ipv6 results on an
ipv4-only system, but it prevents e.g. the testcases from working if the
testsystem has no configured address at the moment (expect loopback), so
allow it to be sidestepped and let the testcases sidestep it.

Git-Dch: Ignore

methods/connect.cc
test/integration/framework

index 171622fa570d31a2813dd2f5be4d4ee259e45f2e..b4cd17ca867a7725a9a0c27e9268c5926ee72a7c 100644 (file)
@@ -164,7 +164,12 @@ static bool ConnectToHostname(std::string const &Host, int const Port,
       struct addrinfo Hints;
       memset(&Hints,0,sizeof(Hints));
       Hints.ai_socktype = SOCK_STREAM;
-      Hints.ai_flags = AI_ADDRCONFIG;
+      Hints.ai_flags = 0;
+      // see getaddrinfo(3): only return address if system has such a address configured
+      // useful if system is ipv4 only, to not get ipv6, but that fails if the system has
+      // no address configured: e.g. offline and trying to connect to localhost.
+      if (_config->FindB("Acquire::Connect::AddrConfig", true) == true)
+        Hints.ai_flags |= AI_ADDRCONFIG;
       Hints.ai_protocol = 0;
       
       if(_config->FindB("Acquire::ForceIPv4", false) == true)
index 04f54c8e2a9ae65069eeb0adc3afe0669987c7f5..f1e2fa090045d8fec2e31ffbb1e4fd6655a56afc 100644 (file)
@@ -377,6 +377,7 @@ EOF
        fi
        echo "Acquire::https::CaInfo \"${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem\";" > rootdir/etc/apt/apt.conf.d/99https
        echo "Apt::Cmd::Disable-Script-Warning \"1\";" > rootdir/etc/apt/apt.conf.d/apt-binary
+       echo 'Acquire::Connect::AddrConfig "false";' > rootdir/etc/apt/apt.conf.d/connect-addrconfig
        configcompression '.' 'gz' #'bz2' 'lzma' 'xz'
        confighashes 'SHA1' # these are tests, not security best-practices