diff options
author | David Kalnischkies <david@kalnischkies.de> | 2015-11-03 16:05:14 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2015-11-04 18:42:28 +0100 |
commit | 23d35ec15a849ee755f51a99939b0131e8faefa5 (patch) | |
tree | afd33d375029dd10dc29b4b9528c5809e32a4252 /methods | |
parent | ce1f3a2c616b86da657c1c796efa5f4d18c30c39 (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
Diffstat (limited to 'methods')
-rw-r--r-- | methods/connect.cc | 7 |
1 files changed, 6 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) |