mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 08:14:15 +00:00
prevent log spamming with no_descriptors error
Signed-off-by: R4SAS <r4sas@i2pmail.org>
This commit is contained in:
parent
737603e81b
commit
857df5c734
@ -250,7 +250,7 @@ namespace http {
|
|||||||
break;
|
break;
|
||||||
case eRouterErrorNoDescriptors:
|
case eRouterErrorNoDescriptors:
|
||||||
s << " - " << tr("No Descriptors");
|
s << " - " << tr("No Descriptors");
|
||||||
break;
|
break;
|
||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1424,19 +1424,20 @@ namespace transport
|
|||||||
else
|
else
|
||||||
LogPrint (eLogError, "NTCP2: Connected from error ", ec.message ());
|
LogPrint (eLogError, "NTCP2: Connected from error ", ec.message ());
|
||||||
}
|
}
|
||||||
else
|
else if (error == boost::asio::error::no_descriptors)
|
||||||
{
|
{
|
||||||
LogPrint (eLogError, "NTCP2: Accept error ", error.message ());
|
i2p::context.SetError (eRouterErrorNoDescriptors);
|
||||||
if (error == boost::asio::error::no_descriptors)
|
if (m_NoFileExhaustTimestamp < i2p::util::GetSecondsSinceEpoch () - NTCP2_DESCRIPTORS_EXHAUST_TIMEOUT)
|
||||||
{
|
{
|
||||||
i2p::context.SetError (eRouterErrorNoDescriptors);
|
m_NoFileExhaustTimestamp = i2p::util::GetSecondsSinceEpoch ();
|
||||||
// TODO
|
LogPrint (eLogWarning, "NTCP2: WARNING! i2pd met file descriptors exhaustion! Please check your nofile limits!");
|
||||||
return;
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
LogPrint (eLogError, "NTCP2: Accept error ", error.message ());
|
||||||
|
|
||||||
if (error != boost::asio::error::operation_aborted)
|
if (error != boost::asio::error::operation_aborted)
|
||||||
{
|
{
|
||||||
if (!conn) // connection is used, create new one
|
if (!conn) // connection is used, create new one
|
||||||
conn = std::make_shared<NTCP2Session> (*this);
|
conn = std::make_shared<NTCP2Session> (*this);
|
||||||
else // reuse failed
|
else // reuse failed
|
||||||
@ -1463,22 +1464,26 @@ namespace transport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
LogPrint (eLogError, "NTCP2: Connected from error ", ec.message ());
|
LogPrint (eLogError, "NTCP2: Connected from ipv6 error: ", ec.message ());
|
||||||
|
}
|
||||||
|
else if (error == boost::asio::error::no_descriptors)
|
||||||
|
{
|
||||||
|
i2p::context.SetErrorV6 (eRouterErrorNoDescriptors);
|
||||||
|
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
|
else
|
||||||
{
|
LogPrint (eLogError, "NTCP2: Accept ipv6 error: ", error.message ());
|
||||||
LogPrint (eLogError, "NTCP2: Accept ipv6 error ", error.message ());
|
|
||||||
if (error == boost::asio::error::no_descriptors)
|
|
||||||
{
|
|
||||||
i2p::context.SetErrorV6 (eRouterErrorNoDescriptors);
|
|
||||||
// TODO
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (error != boost::asio::error::operation_aborted)
|
if (error != boost::asio::error::operation_aborted)
|
||||||
{
|
{
|
||||||
conn = std::make_shared<NTCP2Session> (*this);
|
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,
|
m_NTCP2V6Acceptor->async_accept(conn->GetSocket (), std::bind (&NTCP2Server::HandleAcceptV6, this,
|
||||||
conn, std::placeholders::_1));
|
conn, std::placeholders::_1));
|
||||||
}
|
}
|
||||||
@ -1728,7 +1733,7 @@ namespace transport
|
|||||||
});
|
});
|
||||||
|
|
||||||
boost::asio::async_read(conn->GetSocket(), boost::asio::buffer(readbuff->data (), SOCKS5_UDP_IPV4_REQUEST_HEADER_SIZE), // read min reply size
|
boost::asio::async_read(conn->GetSocket(), boost::asio::buffer(readbuff->data (), SOCKS5_UDP_IPV4_REQUEST_HEADER_SIZE), // read min reply size
|
||||||
boost::asio::transfer_all(),
|
boost::asio::transfer_all(),
|
||||||
[timer, conn, sz, readbuff](const boost::system::error_code & e, std::size_t transferred)
|
[timer, conn, sz, readbuff](const boost::system::error_code & e, std::size_t transferred)
|
||||||
{
|
{
|
||||||
if (e)
|
if (e)
|
||||||
@ -1736,7 +1741,7 @@ namespace transport
|
|||||||
else if (!(*readbuff)[1]) // succeeded
|
else if (!(*readbuff)[1]) // succeeded
|
||||||
{
|
{
|
||||||
boost::system::error_code ec;
|
boost::system::error_code ec;
|
||||||
size_t moreBytes = conn->GetSocket ().available(ec);
|
size_t moreBytes = conn->GetSocket ().available(ec);
|
||||||
if (moreBytes) // read remaining portion of reply if ipv6 received
|
if (moreBytes) // read remaining portion of reply if ipv6 received
|
||||||
boost::asio::read (conn->GetSocket (), boost::asio::buffer(readbuff->data (), moreBytes), boost::asio::transfer_all (), ec);
|
boost::asio::read (conn->GetSocket (), boost::asio::buffer(readbuff->data (), moreBytes), boost::asio::transfer_all (), ec);
|
||||||
timer->cancel();
|
timer->cancel();
|
||||||
|
@ -43,6 +43,8 @@ namespace transport
|
|||||||
const int NTCP2_CLOCK_SKEW = 60; // in seconds
|
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_MAX_OUTGOING_QUEUE_SIZE = 500; // how many messages we can queue up
|
||||||
|
|
||||||
|
const int NTCP2_DESCRIPTORS_EXHAUST_TIMEOUT = 60; // 1 minute
|
||||||
|
|
||||||
enum NTCP2BlockType
|
enum NTCP2BlockType
|
||||||
{
|
{
|
||||||
eNTCP2BlkDateTime = 0,
|
eNTCP2BlkDateTime = 0,
|
||||||
@ -286,6 +288,8 @@ namespace transport
|
|||||||
std::unique_ptr<boost::asio::ip::tcp::endpoint> m_ProxyEndpoint;
|
std::unique_ptr<boost::asio::ip::tcp::endpoint> m_ProxyEndpoint;
|
||||||
std::shared_ptr<boost::asio::ip::tcp::endpoint> m_Address4, m_Address6, m_YggdrasilAddress;
|
std::shared_ptr<boost::asio::ip::tcp::endpoint> m_Address4, m_Address6, m_YggdrasilAddress;
|
||||||
|
|
||||||
|
uint64_t m_NoFileExhaustTimestamp;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// for HTTP/I2PControl
|
// for HTTP/I2PControl
|
||||||
|
Loading…
x
Reference in New Issue
Block a user