From 7e4c33d27e9cb1b5711a2c4bcb27689366a74c09 Mon Sep 17 00:00:00 2001 From: orignal Date: Sun, 7 Feb 2021 10:39:26 -0500 Subject: [PATCH] resend RouterInfo after some interval --- libi2pd/NTCP2.cpp | 11 ++++++++++- libi2pd/NTCP2.h | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libi2pd/NTCP2.cpp b/libi2pd/NTCP2.cpp index 130a6a20..dc485d5b 100644 --- a/libi2pd/NTCP2.cpp +++ b/libi2pd/NTCP2.cpp @@ -343,6 +343,8 @@ namespace transport else LogPrint (eLogWarning, "NTCP2: Missing NTCP2 parameters"); } + m_NextRouterInfoResendTime = i2p::util::GetSecondsSinceEpoch () + NTCP2_ROUTERINFO_RESEND_INTERVAL + + rand ()%NTCP2_ROUTERINFO_RESEND_INTERVAL_THRESHOLD; } NTCP2Session::~NTCP2Session () @@ -1012,7 +1014,14 @@ namespace transport m_NumSentBytes += bytes_transferred; i2p::transport::transports.UpdateSentBytes (bytes_transferred); LogPrint (eLogDebug, "NTCP2: Next frame sent ", bytes_transferred); - SendQueue (); + if (m_LastActivityTimestamp > m_NextRouterInfoResendTime) + { + m_NextRouterInfoResendTime += NTCP2_ROUTERINFO_RESEND_INTERVAL + + rand ()%NTCP2_ROUTERINFO_RESEND_INTERVAL_THRESHOLD; + SendRouterInfo (); + } + else + SendQueue (); } } diff --git a/libi2pd/NTCP2.h b/libi2pd/NTCP2.h index f80ba75a..a7708872 100644 --- a/libi2pd/NTCP2.h +++ b/libi2pd/NTCP2.h @@ -34,6 +34,8 @@ namespace transport const int NTCP2_ESTABLISH_TIMEOUT = 10; // 10 seconds const int NTCP2_TERMINATION_TIMEOUT = 120; // 2 minutes const int NTCP2_TERMINATION_CHECK_TIMEOUT = 30; // 30 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_CLOCK_SKEW = 60; // in seconds const int NTCP2_MAX_OUTGOING_QUEUE_SIZE = 500; // how many messages we can queue up @@ -212,6 +214,7 @@ namespace transport bool m_IsSending; std::list > m_SendQueue; + uint64_t m_NextRouterInfoResendTime; // seconds since epoch }; class NTCP2Server: private i2p::util::RunnableServiceWithWork