diff --git a/src/network.cpp b/src/network.cpp index c843cfc0..5778c8db 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -44,7 +44,7 @@ namespace net { net_e from_address(const std::string_view &view) { - auto addr = ip::make_address(view); + auto addr = normalize_address(ip::make_address(view)); if (addr.is_v6()) { for (auto &range : pc_ips_v6) { diff --git a/src/network.h b/src/network.h index b54f63ce..57bc65e8 100644 --- a/src/network.h +++ b/src/network.h @@ -58,6 +58,15 @@ namespace net { std::string_view af_to_any_address_string(af_e af); + /** + * @brief Converts an address to a normalized form. + * @details Normalization converts IPv4-mapped IPv6 addresses into IPv4 addresses. + * @param address The address to normalize. + * @return Normalized address. + */ + boost::asio::ip::address + normalize_address(boost::asio::ip::address address); + /** * @brief Returns the given address in normalized string form. * @details Normalization converts IPv4-mapped IPv6 addresses into IPv4 addresses.