From fd012fa3b758a35ecdd867042bca6e705502d9c7 Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 2 Oct 2025 21:16:54 -0400 Subject: [PATCH] send options with datagram3 only --- libi2pd_client/UDPTunnel.cpp | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/libi2pd_client/UDPTunnel.cpp b/libi2pd_client/UDPTunnel.cpp index 7a525821..200d6034 100644 --- a/libi2pd_client/UDPTunnel.cpp +++ b/libi2pd_client/UDPTunnel.cpp @@ -165,11 +165,16 @@ namespace client auto session = GetDatagramSession (); if (ts > LastActivity + I2P_UDP_REPLIABLE_DATAGRAM_INTERVAL) { - i2p::util::Mapping options; - options.Put (UDP_SESSION_SEQN, m_NextSendPacketNum); - if (m_LastReceivedPacketNum > 0) - options.Put (UDP_SESSION_ACKED, m_LastReceivedPacketNum); - m_Destination->SendDatagram(session, m_Buffer, len, LocalPort, RemotePort, &options); + if (session->GetVersion () == i2p::datagram::eDatagramV3) + { + i2p::util::Mapping options; + options.Put (UDP_SESSION_SEQN, m_NextSendPacketNum); + if (m_LastReceivedPacketNum > 0) + options.Put (UDP_SESSION_ACKED, m_LastReceivedPacketNum); + m_Destination->SendDatagram(session, m_Buffer, len, LocalPort, RemotePort, &options); + } + else + m_Destination->SendDatagram(session, m_Buffer, len, LocalPort, RemotePort); } else m_Destination->SendRawDatagram(session, m_Buffer, len, LocalPort, RemotePort); @@ -374,11 +379,16 @@ namespace client auto session = GetDatagramSession (); if (ts > m_LastSession->second + I2P_UDP_REPLIABLE_DATAGRAM_INTERVAL) { - i2p::util::Mapping options; - options.Put (UDP_SESSION_SEQN, m_NextSendPacketNum); - if (m_LastReceivedPacketNum > 0) - options.Put (UDP_SESSION_ACKED, m_LastReceivedPacketNum); - m_LocalDest->GetDatagramDestination ()->SendDatagram (session, m_RecvBuff, transferred, remotePort, RemotePort, &options); + if (m_DatagramVersion == i2p::datagram::eDatagramV3) + { + i2p::util::Mapping options; + options.Put (UDP_SESSION_SEQN, m_NextSendPacketNum); + if (m_LastReceivedPacketNum > 0) + options.Put (UDP_SESSION_ACKED, m_LastReceivedPacketNum); + m_LocalDest->GetDatagramDestination ()->SendDatagram (session, m_RecvBuff, transferred, remotePort, RemotePort, &options); + } + else + m_LocalDest->GetDatagramDestination ()->SendDatagram (session, m_RecvBuff, transferred, remotePort, RemotePort); } else m_LocalDest->GetDatagramDestination ()->SendRawDatagram (session, m_RecvBuff, transferred, remotePort, RemotePort);