Skip to content

Trouble using IPv6 when no default route is present #405

@chrysn

Description

@chrysn

CI started acting up when Codeberg's Woodpecker stopped having an IPv6 route.

Deeper investigation is pending, but what I think is the trouble and would need to be fixed is that the custom getaddr info variant (that works across platforms even when AI_V6MAPPED is unsupported), and there is no IPv6 loopback address, IPv6 literals are still not let pass through.

Observed behavior on an affected system:

$ ip -6 a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000  inet6 ::1/128 scope host proto kernel_lo   valid_lft forever preferred_lft forever $ ip -6 r $ socat /dev/null tcp6:localhost:1234 || true 2026/02/18 14:15:50 socat[285] W connect(6, AF=10 [0000:0000:0000:0000:0000:0000:0000:0001]:1234, 28): Connection refused 2026/02/18 14:15:50 socat[285] E tcp6:localhost:1234: Connection refused $ echo 'import socket; print(await asyncio.get_event_loop().getaddrinfo("::1", 1234, family=socket.AF_UNSPEC, type=socket.SOCK_DGRAM, proto=socket.IPPROTO_UDP, flags=socket.AI_ADDRCONFIG))' | python3 -m asyncio [...]  File "/usr/local/lib/python3.13/socket.py", line 977, in getaddrinfo  for res in _socket.getaddrinfo(host, port, family, type, proto, flags):  ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ socket.gaierror: [Errno -9] Address family for hostname not supported

We're looking up something that is an IP address, so getaddrinfo should never get in our way there.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions