diff --git a/libi2pd/SSU2.cpp b/libi2pd/SSU2.cpp index f6c6226b..a32eb1f4 100644 --- a/libi2pd/SSU2.cpp +++ b/libi2pd/SSU2.cpp @@ -1267,7 +1267,9 @@ namespace transport ts < session->GetCreationTime () + SSU2_TO_INTRODUCER_SESSION_EXPIRATION) { session->SendKeepAlive (); - if (ts < session->GetCreationTime () + SSU2_TO_INTRODUCER_SESSION_DURATION) + if (ts < session->GetCreationTime () + SSU2_TO_INTRODUCER_SESSION_DURATION || + ts < session->GetCreationTime () + SSU2_TO_INTRODUCER_SESSION_DURATION + + m_Rng () % SSU2_TO_INTRODUCER_SESSION_DURATION_VARIANCE) { newList.push_back ({ident, session->GetRelayTag ()}); if (tag != session->GetRelayTag ()) diff --git a/libi2pd/SSU2.h b/libi2pd/SSU2.h index 06267ad4..996c0979 100644 --- a/libi2pd/SSU2.h +++ b/libi2pd/SSU2.h @@ -35,7 +35,8 @@ namespace transport const uint64_t SSU2_SOCKET_MAX_BUFFER_SIZE = 4 * 1024 * 1024; const size_t SSU2_MAX_NUM_INTRODUCERS = 3; const size_t SSU2_MIN_RECEIVED_PACKET_SIZE = 40; // 16 byte short header + 8 byte minimum payload + 16 byte MAC - const int SSU2_TO_INTRODUCER_SESSION_DURATION = 3600; // 1 hour + const int SSU2_TO_INTRODUCER_SESSION_DURATION = 3480; // 58 minutes + const int SSU2_TO_INTRODUCER_SESSION_DURATION_VARIANCE = 330; // 5 minutes const int SSU2_TO_INTRODUCER_SESSION_EXPIRATION = 4800; // 80 minutes const int SSU2_KEEP_ALIVE_INTERVAL = 15; // in seconds const int SSU2_KEEP_ALIVE_INTERVAL_VARIANCE = 4; // in seconds