prevent log spamming with no_descriptors error

Signed-off-by: R4SAS <r4sas@i2pmail.org>
This commit is contained in:
R4SAS 2022-12-10 21:57:23 +03:00
parent 737603e81b
commit 857df5c734
No known key found for this signature in database
GPG Key ID: 66F6C87B98EBCFE2
3 changed files with 34 additions and 25 deletions

View File

@ -1424,16 +1424,17 @@ namespace transport
else
LogPrint (eLogError, "NTCP2: Connected from error ", ec.message ());
}
else
{
LogPrint (eLogError, "NTCP2: Accept error ", error.message ());
if (error == boost::asio::error::no_descriptors)
else if (error == boost::asio::error::no_descriptors)
{
i2p::context.SetError (eRouterErrorNoDescriptors);
// TODO
return;
if (m_NoFileExhaustTimestamp < i2p::util::GetSecondsSinceEpoch () - NTCP2_DESCRIPTORS_EXHAUST_TIMEOUT)
{
m_NoFileExhaustTimestamp = i2p::util::GetSecondsSinceEpoch ();
LogPrint (eLogWarning, "NTCP2: WARNING! i2pd met file descriptors exhaustion! Please check your nofile limits!");
}
}
else
LogPrint (eLogError, "NTCP2: Accept error ", error.message ());
if (error != boost::asio::error::operation_aborted)
{
@ -1463,22 +1464,26 @@ namespace transport
}
}
else
LogPrint (eLogError, "NTCP2: Connected from error ", ec.message ());
LogPrint (eLogError, "NTCP2: Connected from ipv6 error: ", ec.message ());
}
else
{
LogPrint (eLogError, "NTCP2: Accept ipv6 error ", error.message ());
if (error == boost::asio::error::no_descriptors)
else if (error == boost::asio::error::no_descriptors)
{
i2p::context.SetErrorV6 (eRouterErrorNoDescriptors);
// TODO
return;
if (m_NoFileExhaustTimestamp < i2p::util::GetSecondsSinceEpoch () - NTCP2_DESCRIPTORS_EXHAUST_TIMEOUT)
{
m_NoFileExhaustTimestamp = i2p::util::GetSecondsSinceEpoch ();
LogPrint (eLogWarning, "NTCP2: WARNING! i2pd met file descriptors exhaustion! Please check your nofile limits!");
}
}
else
LogPrint (eLogError, "NTCP2: Accept ipv6 error: ", error.message ());
if (error != boost::asio::error::operation_aborted)
{
if (!conn) // connection is used, create new one
conn = std::make_shared<NTCP2Session> (*this);
else // reuse failed
conn->Close ();
m_NTCP2V6Acceptor->async_accept(conn->GetSocket (), std::bind (&NTCP2Server::HandleAcceptV6, this,
conn, std::placeholders::_1));
}

View File

@ -43,6 +43,8 @@ namespace transport
const int NTCP2_CLOCK_SKEW = 60; // in seconds
const int NTCP2_MAX_OUTGOING_QUEUE_SIZE = 500; // how many messages we can queue up
const int NTCP2_DESCRIPTORS_EXHAUST_TIMEOUT = 60; // 1 minute
enum NTCP2BlockType
{
eNTCP2BlkDateTime = 0,
@ -286,6 +288,8 @@ namespace transport
std::unique_ptr<boost::asio::ip::tcp::endpoint> m_ProxyEndpoint;
std::shared_ptr<boost::asio::ip::tcp::endpoint> m_Address4, m_Address6, m_YggdrasilAddress;
uint64_t m_NoFileExhaustTimestamp;
public:
// for HTTP/I2PControl