don't set IPV6_V6ONLY option for ipv6 socket for Haiku

This commit is contained in:
orignal
2025-09-19 16:04:32 -04:00
parent 1f0512c4f6
commit db82903bb0
2 changed files with 13 additions and 2 deletions
+6 -2
View File
@@ -1536,11 +1536,15 @@ namespace transport
}
else if (address->IsV6() && (context.SupportsV6 () || context.SupportsMesh ()))
{
#if defined(__HAIKU__)
LogPrint (eLogInfo, "NTCP2: Can't listen v6 TCP port ", address->port, ". IPV6_V6ONLY is not supported");
continue; // IPV6_V6ONLY is not supported. Don't listen ipv6
#endif
m_NTCP2V6Acceptor.reset (new boost::asio::ip::tcp::acceptor (GetService ()));
try
{
m_NTCP2V6Acceptor->open (boost::asio::ip::tcp::v6());
m_NTCP2V6Acceptor->set_option (boost::asio::ip::v6_only (true));
m_NTCP2V6Acceptor->open (boost::asio::ip::tcp::v6());
m_NTCP2V6Acceptor->set_option (boost::asio::ip::v6_only (true));
m_NTCP2V6Acceptor->set_option (boost::asio::socket_base::reuse_address (true));
#if defined(__linux__) && !defined(_NETINET_IN_H)
if (!m_Address6 && !m_YggdrasilAddress) // only if not binded to address
+7
View File
@@ -289,7 +289,14 @@ namespace transport
socket.close ();
socket.open (localEndpoint.protocol ());
if (localEndpoint.address ().is_v6 ())
#if !defined(__HAIKU__)
socket.set_option (boost::asio::ip::v6_only (true));
#else
{
LogPrint (eLogWarning, "SSU2: Socket option IPV6_V6ONLY is not supported");
m_IsForcedFirewalled6 = true; // IPV6_V6ONLY is not supported, always Firewalled for ipv6
}
#endif
uint64_t bufferSize = i2p::context.GetBandwidthLimit() * 1024 / 5; // max lag = 200ms
bufferSize = std::max(SSU2_SOCKET_MIN_BUFFER_SIZE, std::min(bufferSize, SSU2_SOCKET_MAX_BUFFER_SIZE));