verify IP and netid only when RI parsed

This commit is contained in:
R4SAS 2019-05-17 09:08:30 +03:00
parent a8984ad726
commit c7debcf6ec
3 changed files with 5 additions and 12 deletions

View file

@ -212,10 +212,10 @@ namespace data
if (!ecode) if (!ecode)
{ {
#if BOOST_VERSION >= 104900 #if BOOST_VERSION >= 104900
if (!hostaddr.is_unspecified () && !i2p::util::net::IsInReservedRange(hostaddr)) // check if address is valid if (!hostaddr.is_unspecified () && ((i2p::context.GetNetID () != I2PD_NET_ID) || !i2p::util::net::IsInReservedRange(hostaddr)))
#else #else
hostaddr.to_string (ecode); hostaddr.to_string (ecode);
if (!ecode && !i2p::util::net::IsInReservedRange(hostaddr)) if (!ecode && ((i2p::context.GetNetID () != I2PD_NET_ID) || !i2p::util::net::IsInReservedRange(hostaddr)))
#endif #endif
{ {
address->host = hostaddr; address->host = hostaddr;

View file

@ -406,7 +406,7 @@ namespace transport
{ {
peer.numAttempts++; peer.numAttempts++;
auto address = peer.router->GetNTCP2Address (true, !context.SupportsV6 ()); // published only auto address = peer.router->GetNTCP2Address (true, !context.SupportsV6 ()); // published only
if (address && m_NTCP2Server && !i2p::util::net::IsInReservedRange(address->host)) if (address && m_NTCP2Server)
{ // we support NTCP2, it has priority over NTCP and remote address is not in reserved range { // we support NTCP2, it has priority over NTCP and remote address is not in reserved range
auto s = std::make_shared<NTCP2Session> (*m_NTCP2Server, peer.router); auto s = std::make_shared<NTCP2Session> (*m_NTCP2Server, peer.router);
m_NTCP2Server->Connect (address->host, address->port, s); m_NTCP2Server->Connect (address->host, address->port, s);
@ -417,7 +417,7 @@ namespace transport
{ {
peer.numAttempts++; peer.numAttempts++;
auto address = peer.router->GetNTCPAddress (!context.SupportsV6 ()); auto address = peer.router->GetNTCPAddress (!context.SupportsV6 ());
if (address && m_NTCPServer && !i2p::util::net::IsInReservedRange(address->host)) if (address && m_NTCPServer)
{ {
if (!peer.router->UsesIntroducer () && !peer.router->IsUnreachable ()) if (!peer.router->UsesIntroducer () && !peer.router->IsUnreachable ())
{ {
@ -451,7 +451,7 @@ namespace transport
{ {
peer.numAttempts++; peer.numAttempts++;
auto address = peer.router->GetSSUAddress (!context.SupportsV6 ()); auto address = peer.router->GetSSUAddress (!context.SupportsV6 ());
if (address && m_SSUServer && !i2p::util::net::IsInReservedRange(address->host)) if (address && m_SSUServer)
{ {
m_SSUServer->CreateSession (peer.router, address->host, address->port); m_SSUServer->CreateSession (peer.router, address->host, address->port);
return true; return true;

View file

@ -3,9 +3,7 @@
#include <boost/asio.hpp> #include <boost/asio.hpp>
#include "util.h" #include "util.h"
#include "Config.h"
#include "Log.h" #include "Log.h"
#include "version.h"
#ifdef WIN32 #ifdef WIN32
#include <stdlib.h> #include <stdlib.h>
@ -346,11 +344,6 @@ namespace net
} }
bool IsInReservedRange(const boost::asio::ip::address& host) { bool IsInReservedRange(const boost::asio::ip::address& host) {
// ignore checking for netid other than main network
int NetID; i2p::config::GetOption("netid", NetID);
if (NetID != I2PD_NET_ID)
return false;
// https://en.wikipedia.org/wiki/Reserved_IP_addresses // https://en.wikipedia.org/wiki/Reserved_IP_addresses
if(host.is_v4()) if(host.is_v4())
{ {