diff --git a/libi2pd/NTCP2.cpp b/libi2pd/NTCP2.cpp index d74c2525..b6e90f7e 100644 --- a/libi2pd/NTCP2.cpp +++ b/libi2pd/NTCP2.cpp @@ -544,7 +544,8 @@ namespace transport if (m_Server.GetVersion () > 2) // we support post quantum in config m_Establisher->SetVersion (addr->v); #endif - //if (addr->v > 2) m_Establisher->m_IsLongPadding = true; // TODO: check router version + if (addr->v > 2 && in_RemoteRouter->GetVersion () >= MAKE_VERSION_NUMBER(0, 9, 69)) // 0.9.69 + m_Establisher->m_IsLongPadding = true; } else LogPrint (eLogWarning, "NTCP2: Missing NTCP2 address"); @@ -614,7 +615,7 @@ namespace transport m_Establisher.reset (nullptr); SetTerminationTimeout (NTCP2_TERMINATION_TIMEOUT + m_Server.GetRng ()() % NTCP2_TERMINATION_TIMEOUT_VARIANCE); m_NextRouterInfoResendTime = i2p::util::GetSecondsSinceEpoch () + NTCP2_ROUTERINFO_RESEND_INTERVAL + - m_Server.GetRng ()() % NTCP2_ROUTERINFO_RESEND_INTERVAL_THRESHOLD; + m_Server.GetRng ()() % NTCP2_ROUTERINFO_RESEND_INTERVAL_VARIANCE; SendQueue (); transports.PeerConnected (shared_from_this ()); } @@ -1493,7 +1494,7 @@ namespace transport if (GetLastActivityTimestamp () > m_NextRouterInfoResendTime && m_NextRouterInfoResendTime) { m_NextRouterInfoResendTime += NTCP2_ROUTERINFO_RESEND_INTERVAL + - m_Server.GetRng ()() % NTCP2_ROUTERINFO_RESEND_INTERVAL_THRESHOLD; + m_Server.GetRng ()() % NTCP2_ROUTERINFO_RESEND_INTERVAL_VARIANCE; SendRouterInfo (); } else diff --git a/libi2pd/NTCP2.h b/libi2pd/NTCP2.h index 55d40ed3..3a2a84eb 100644 --- a/libi2pd/NTCP2.h +++ b/libi2pd/NTCP2.h @@ -33,7 +33,7 @@ namespace transport constexpr size_t NTCP2_UNENCRYPTED_FRAME_MAX_SIZE = 65519; constexpr size_t NTCP2_SEND_AFTER_FRAME_SIZE = 16386; // send frame when exceeds this size constexpr size_t NTCP2_SESSION_HANDSHAKE_MAX_SIZE = 287; // SessionRequest/SesionCreated without ML-KEM frame - constexpr size_t NTCP2_SESSION_HANDSHAKE_LONG_MAX_SIZE = 1248; // for non-PQ, 1248 = 1184(MLKEM768 key len) + 64 + constexpr size_t NTCP2_SESSION_HANDSHAKE_LONG_MAX_SIZE = 944; // for non-PQ const int NTCP2_MAX_PADDING_RATIO = 6; // in % const int NTCP2_CONNECT_TIMEOUT = 5; // 5 seconds @@ -44,7 +44,7 @@ namespace transport const int NTCP2_TERMINATION_CHECK_TIMEOUT_VARIANCE = 5; // 5 seconds const int NTCP2_RECEIVE_BUFFER_DELETION_TIMEOUT = 3; // 3 seconds const int NTCP2_ROUTERINFO_RESEND_INTERVAL = 25*60; // 25 minuntes in seconds - const int NTCP2_ROUTERINFO_RESEND_INTERVAL_THRESHOLD = 25*60; // 25 minuntes + const int NTCP2_ROUTERINFO_RESEND_INTERVAL_VARIANCE = 25*60; // 25 minuntes const int NTCP2_CLOCK_SKEW = 60; // in seconds const int NTCP2_MAX_OUTGOING_QUEUE_SIZE = 500; // how many messages we can queue up