mirror of
https://github.com/transmission/transmission
synced 2025-03-04 18:48:06 +00:00
fix: use SO_REUSEADDR when binding UDP ports (#4513)
* fix: use SO_REUSEPORT when binding UDP ports * chore: cast 3rd arg of setsockopt
This commit is contained in:
parent
d338eb3bdc
commit
24eb6ef293
1 changed files with 7 additions and 1 deletions
|
@ -144,6 +144,9 @@ tr_session::tr_udp_core::tr_udp_core(tr_session& session, tr_port udp_port)
|
|||
|
||||
if (auto sock = socket(PF_INET, SOCK_DGRAM, 0); sock != TR_BAD_SOCKET)
|
||||
{
|
||||
auto optval = int{ 1 };
|
||||
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast<char const*>(&optval), sizeof(optval));
|
||||
|
||||
auto const [addr, is_any] = session_.publicAddress(TR_AF_INET);
|
||||
auto const [ss, sslen] = addr.to_sockaddr(udp_port_);
|
||||
|
||||
|
@ -171,6 +174,9 @@ tr_session::tr_udp_core::tr_udp_core(tr_session& session, tr_port udp_port)
|
|||
|
||||
if (auto sock = socket(PF_INET6, SOCK_DGRAM, 0); sock != TR_BAD_SOCKET)
|
||||
{
|
||||
auto optval = int{ 1 };
|
||||
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast<char const*>(&optval), sizeof(optval));
|
||||
|
||||
auto const [addr, is_any] = session_.publicAddress(TR_AF_INET6);
|
||||
auto const [ss, sslen] = addr.to_sockaddr(udp_port_);
|
||||
|
||||
|
@ -179,7 +185,7 @@ tr_session::tr_udp_core::tr_udp_core(tr_session& session, tr_port udp_port)
|
|||
auto const error_code = errno;
|
||||
tr_logAddWarn(fmt::format(
|
||||
_("Couldn't bind IPv6 socket {address}: {error} ({error_code})"),
|
||||
fmt::arg("address", addr.display_name()),
|
||||
fmt::arg("address", addr.display_name(udp_port_)),
|
||||
fmt::arg("error", tr_strerror(error_code)),
|
||||
fmt::arg("error_code", error_code)));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue