fix: FTBFS for libevent <= 2.1.8 (#7640)

This commit is contained in:
Yat Ho
2025-10-15 00:28:35 +08:00
committed by GitHub
parent a5884203fd
commit 85301b16d5

View File

@@ -326,13 +326,17 @@ tr_socket_t tr_netBindTCPImpl(tr_address const& addr, tr_port port, bool suppres
(void)setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, reinterpret_cast<char const*>(&optval), sizeof(optval));
(void)evutil_make_listen_socket_reuseable(fd);
if (addr.is_ipv6() && evutil_make_listen_socket_ipv6only(fd) != 0 &&
#ifdef IPV6_V6ONLY
// TODO(tearfur): Consider using `evutil_make_listen_socket_ipv6only` once minimum libevent version is bumped to 2.1.9 or above
if (addr.is_ipv6() &&
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, reinterpret_cast<char const*>(&optval), sizeof(optval)) == -1 &&
sockerrno != ENOPROTOOPT) // if the kernel doesn't support it, ignore it
{
*err_out = sockerrno;
tr_net_close_socket(fd);
return TR_BAD_SOCKET;
}
#endif
auto const [sock, addrlen] = tr_socket_address::to_sockaddr(addr, port);