refactor: use `tr_socket_address::from_string()`

This commit is contained in:
Yat Ho 2024-03-25 14:22:43 +08:00
parent b4ad1f78fc
commit 3fe87979a1
3 changed files with 16 additions and 10 deletions

View File

@ -808,6 +808,19 @@ bool tr_socket_address::is_valid_for_peers(tr_peer_from from) const noexcept
!is_martian_addr(address_, from);
}
std::optional<tr_socket_address> tr_socket_address::from_string(std::string_view sockaddr_sv)
{
auto ss = sockaddr_storage{};
auto sslen = int{ sizeof(ss) };
if (evutil_parse_sockaddr_port(tr_strbuf<char, TR_ADDRSTRLEN>{ sockaddr_sv }, reinterpret_cast<sockaddr*>(&ss), &sslen) !=
0)
{
return {};
}
return from_sockaddr(reinterpret_cast<struct sockaddr const*>(&ss));
}
std::optional<tr_socket_address> tr_socket_address::from_sockaddr(struct sockaddr const* from)
{
if (from == nullptr)

View File

@ -378,6 +378,7 @@ struct tr_socket_address
// --- sockaddr helpers
[[nodiscard]] static std::optional<tr_socket_address> from_string(std::string_view sockaddr_sv);
[[nodiscard]] static std::optional<tr_socket_address> from_sockaddr(sockaddr const*);
[[nodiscard]] static std::pair<sockaddr_storage, socklen_t> to_sockaddr(tr_address const& addr, tr_port port) noexcept;

View File

@ -343,17 +343,9 @@ private:
}
}
auto mcast_ss = sockaddr_storage{};
auto mcast_sslen = int{ sizeof(mcast_ss) };
if (evutil_parse_sockaddr_port(
std::data(McastSockAddr[ip_protocol]),
reinterpret_cast<sockaddr*>(&mcast_ss),
&mcast_sslen) == -1)
{
return false;
}
auto mcast_sockaddr = tr_socket_address::from_sockaddr(reinterpret_cast<sockaddr*>(&mcast_ss));
auto const mcast_sockaddr = tr_socket_address::from_string(McastSockAddr[ip_protocol]);
TR_ASSERT(mcast_sockaddr);
auto const [mcast_ss, mcast_sslen] = mcast_sockaddr->to_sockaddr();
auto const [bind_ss, bind_sslen] = tr_socket_address::to_sockaddr(
tr_address::any(ip_protocol),