diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp index 374b1d29..27cbcd78 100644 --- a/daemon/HTTPServer.cpp +++ b/daemon/HTTPServer.cpp @@ -248,6 +248,9 @@ namespace http { case eRouterErrorSymmetricNAT: s << " - " << tr("Symmetric NAT"); break; + case eRouterErrorNoDescriptors: + s << " - " << tr("No Descriptors"); + break; default: ; } } diff --git a/libi2pd/NTCP2.cpp b/libi2pd/NTCP2.cpp index 953fe333..109f8b88 100644 --- a/libi2pd/NTCP2.cpp +++ b/libi2pd/NTCP2.cpp @@ -1425,10 +1425,18 @@ namespace transport LogPrint (eLogError, "NTCP2: Connected from error ", ec.message ()); } else + { LogPrint (eLogError, "NTCP2: Accept error ", error.message ()); - + if (error == boost::asio::error::no_descriptors) + { + i2p::context.SetError (eRouterErrorNoDescriptors); + // TODO + return; + } + } + if (error != boost::asio::error::operation_aborted) - { + { if (!conn) // connection is used, create new one conn = std::make_shared (*this); else // reuse failed @@ -1457,6 +1465,16 @@ namespace transport else LogPrint (eLogError, "NTCP2: Connected from error ", ec.message ()); } + else + { + 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) { diff --git a/libi2pd/RouterContext.h b/libi2pd/RouterContext.h index f115f026..dd7f0272 100644 --- a/libi2pd/RouterContext.h +++ b/libi2pd/RouterContext.h @@ -47,7 +47,8 @@ namespace garlic eRouterErrorNone = 0, eRouterErrorClockSkew = 1, eRouterErrorOffline = 2, - eRouterErrorSymmetricNAT = 3 + eRouterErrorSymmetricNAT = 3, + eRouterErrorNoDescriptors = 4 }; class RouterContext: public i2p::garlic::GarlicDestination