From 23d35ec15a849ee755f51a99939b0131e8faefa5 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 Nov 2015 16:05:14 +0100 Subject: allow getaddrinfo flag AI_ADDRCONFIG to be disabled 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 | 7 ++++++- test/integration/framework | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/methods/connect.cc b/methods/connect.cc index 171622fa5..b4cd17ca8 100644 --- a/methods/connect.cc +++ b/methods/connect.cc @@ -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) diff --git a/test/integration/framework b/test/integration/framework index 04f54c8e2..f1e2fa090 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -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 -- cgit v1.2.3