I'm running Cockpit testsuite inside Hasher (https://en.altlinux.org/Hasher).
There are only loopback ifaces ( usually only IPv4).
I have 7 FAILs:
PASS: test-webserver 1 /web-server/table
**
cockpit-protocol:ERROR:src/common/test-webserver.c:357:perform_http_request: assertion failed (error == NULL): Error resolving ?localhost?: Name or service not known (g-resolver-error-quark, 0)
FAIL: test-webserver 2 /web-server/query-string
**
cockpit-protocol:ERROR:src/common/test-webserver.c:357:perform_http_request: assertion failed (error == NULL): Error resolving ?localhost?: Name or service not known (g-resolver-error-quark, 0)
FAIL: test-webserver 3 /web-server/host-header
**
cockpit-protocol:ERROR:src/common/test-webserver.c:357:perform_http_request: assertion failed (error == NULL): Error resolving ?localhost?: Name or service not known (g-resolver-error-quark, 0)
FAIL: test-webserver 4 /web-server/not-found
SKIP: test-webserver 5 # skip -- No non-loopback network interface available
**
cockpit-protocol:ERROR:src/common/test-webserver.c:357:perform_http_request: assertion failed (error == NULL): Error resolving ?localhost?: Name or service not known (g-resolver-error-quark, 0)
FAIL: test-webserver 6 /web-server/no-redirect-localhost
SKIP: test-webserver 7 # skip -- No non-loopback network interface available
SKIP: test-webserver 8 # skip -- No non-loopback network interface available
**
cockpit-protocol:ERROR:src/common/test-webserver.c:357:perform_http_request: assertion failed (error == NULL): Error resolving ?localhost?: Name or service not known (g-resolver-error-quark, 0)
FAIL: test-webserver 9 /web-server/handle-resource
PASS: test-webserver 10 /web-server/url-root
**
cockpit-protocol:ERROR:src/common/test-webserver.c:357:perform_http_request: assertion failed (error == NULL): Error resolving ?localhost?: Name or service not known (g-resolver-error-quark, 0)
FAIL: test-webserver 11 /web-server/url-root-handlers
**
cockpit-protocol:ERROR:src/common/test-webserver.c:357:perform_http_request: assertion failed (error == NULL): Error resolving ?localhost?: Name or service not known (g-resolver-error-quark, 0)
FAIL: test-webserver 12 /web-server/local-address-only
As it was found out an actual host resolving happens in gio/gthreadedresolver.c:do_lookup_by_name by calling the getaddrinfo
function with ai_flags=AI_ADDRCONFIG.
According to getaddrinfo(3):
If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4
addresses are returned in the list pointed to by res only if the
local system has at least one IPv4 address configured, and IPv6
addresses are returned only if the local system has at least one IPv6
address configured. The loopback address is not considered for this
case as valid as a configured address.
Steps to reproduce
Disable all non-loopback ifaces
Compile an attached reproducer and run ( gcc resolv.c -o resolv_localhost && ./resolv_localhost)
The error message getaddrinfo: Name or service not known should appear
The same reproducer behavior I see on Fedora29 right now.
Cockpit version: 191 OS: ALTLinux
I'm running Cockpit testsuite inside Hasher (https://en.altlinux.org/Hasher). There are only loopback ifaces ( usually only IPv4).
I have 7 FAILs:
As it was found out an actual host resolving happens in
gio/gthreadedresolver.c:do_lookup_by_name
by calling thegetaddrinfo
function withai_flags=AI_ADDRCONFIG
.According to getaddrinfo(3):
Steps to reproduce
gcc resolv.c -o resolv_localhost && ./resolv_localhost
)getaddrinfo: Name or service not known
should appearThe same reproducer behavior I see on Fedora29 right now.