summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-11-03 16:05:14 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2015-11-04 18:42:28 +0100
commit23d35ec15a849ee755f51a99939b0131e8faefa5 (patch)
treeafd33d375029dd10dc29b4b9528c5809e32a4252
parentce1f3a2c616b86da657c1c796efa5f4d18c30c39 (diff)
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
-rw-r--r--methods/connect.cc7
-rw-r--r--test/integration/framework1
2 files changed, 7 insertions, 1 deletions
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