Commit c649baa6 authored by Dominik Charousset's avatar Dominik Charousset

Prefer IPv6 bind addresses for accept sockets

For example, when passing `localhost` to `make_tcp_accept_socket`, we
first want to try resolving to `::1` and if that fails to `127.0.0.1`.
parent 245be394
......@@ -140,6 +140,13 @@ make_tcp_accept_socket(const uri::authority_type& node,
if (addrs.empty())
return make_error(sec::cannot_open_port, "no local interface available",
to_string(node));
// Prefer ipv6 addresses.
std::stable_sort(std::begin(addrs), std::end(addrs),
[](const ip_address& lhs, const ip_address& rhs) {
if (lhs.embeds_v4())
return rhs.embeds_v4() ? lhs < rhs : false;
return rhs.embeds_v4() ? true : lhs < rhs;
});
for (auto& addr : addrs) {
if (auto sock = make_tcp_accept_socket(ip_endpoint{addr, node.port}, fn))
return *sock;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment