From af4dcc93ed04c4f2219c14821b25cb9efeb7e781 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 12 Nov 2024 13:54:43 +0100 Subject: Core/Networking: Support IPv6 --- src/common/Asio/Resolver.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/common') diff --git a/src/common/Asio/Resolver.h b/src/common/Asio/Resolver.h index 01399e435e5..01fd3127abe 100644 --- a/src/common/Asio/Resolver.h +++ b/src/common/Asio/Resolver.h @@ -21,7 +21,8 @@ #include "IoContext.h" #include "Optional.h" #include -#include +#include +#include namespace Trinity { @@ -35,7 +36,7 @@ namespace Trinity public: explicit Resolver(IoContext& ioContext) : _impl(ioContext) { } - Optional Resolve(boost::asio::ip::tcp const& protocol, std::string const& host, std::string const& service) + Optional Resolve(boost::asio::ip::tcp const& protocol, std::string_view host, std::string_view service) { boost::system::error_code ec; boost::asio::ip::resolver_base::flags flagsResolver = boost::asio::ip::resolver_base::all_matching; @@ -46,6 +47,18 @@ namespace Trinity return results.begin()->endpoint(); } + std::vector ResolveAll(std::string_view host, std::string_view service) + { + boost::system::error_code ec; + boost::asio::ip::resolver_base::flags flagsResolver = boost::asio::ip::resolver_base::all_matching; + boost::asio::ip::tcp::resolver::results_type results = _impl.resolve(host, service, flagsResolver, ec); + std::vector result; + if (!ec) + std::ranges::transform(results, std::back_inserter(result), [](boost::asio::ip::tcp::resolver::results_type::value_type const& entry) { return entry.endpoint(); }); + + return result; + } + private: boost::asio::ip::tcp::resolver _impl; }; -- cgit v1.2.3