From bf7b53a2a671a97afb61244ae37d1afa88e9bf16 Mon Sep 17 00:00:00 2001 From: orignal Date: Fri, 16 Jan 2015 23:01:40 -0500 Subject: [PATCH] resolve address for NTCP --- RouterInfo.cpp | 14 +++++++++++--- RouterInfo.h | 5 +---- Transports.cpp | 4 ++-- Transports.h | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/RouterInfo.cpp b/RouterInfo.cpp index 14d338e9..91f793fb 100644 --- a/RouterInfo.cpp +++ b/RouterInfo.cpp @@ -150,9 +150,17 @@ namespace data address.host = boost::asio::ip::address::from_string (value, ecode); if (ecode) { - // TODO: we should try to resolve address here - LogPrint (eLogWarning, "Unexpected address ", value); - isValidAddress = false; + if (address.transportStyle == eTransportNTCP) + { + m_SupportedTransports |= eNTCPV4; // TODO: + address.addressString = value; + } + else + { + // TODO: resolve address for SSU + LogPrint (eLogWarning, "Unexpected SSU address ", value); + isValidAddress = false; + } } else { diff --git a/RouterInfo.h b/RouterInfo.h index d73ede73..bf1a9dc6 100644 --- a/RouterInfo.h +++ b/RouterInfo.h @@ -69,7 +69,7 @@ namespace data { TransportStyle transportStyle; boost::asio::ip::address host; - char * addressString; + std::string addressString; int port, mtu; uint64_t date; uint8_t cost; @@ -77,9 +77,6 @@ namespace data Tag<32> key; // intro key for SSU std::vector introducers; - Address (): addressString (nullptr) {}; - ~Address () { if (addressString) delete[] addressString; }; - bool IsCompatible (const boost::asio::ip::address& other) const { return (host.is_v4 () && other.is_v4 ()) || diff --git a/Transports.cpp b/Transports.cpp index 9f5353b1..63eca69d 100644 --- a/Transports.cpp +++ b/Transports.cpp @@ -232,7 +232,7 @@ namespace transport } else // we don't have address { - if (address->addressString) // trying to resolve + if (address->addressString.length () > 0) // trying to resolve { LogPrint (eLogInfo, "Resolving ", address->addressString); NTCPResolve (address->addressString, ident); @@ -287,7 +287,7 @@ namespace transport } } - void Transports::NTCPResolve (const char * addr, const i2p::data::IdentHash& ident) + void Transports::NTCPResolve (const std::string& addr, const i2p::data::IdentHash& ident) { auto resolver = std::make_shared(m_Service); resolver->async_resolve (boost::asio::ip::tcp::resolver::query (addr), diff --git a/Transports.h b/Transports.h index 9c751dc3..ffc561ff 100644 --- a/Transports.h +++ b/Transports.h @@ -94,7 +94,7 @@ namespace transport void PostCloseSession (std::shared_ptr router); bool ConnectToPeer (const i2p::data::IdentHash& ident, Peer& peer); - void NTCPResolve (const char * addr, const i2p::data::IdentHash& ident); + void NTCPResolve (const std::string& addr, const i2p::data::IdentHash& ident); void HandleNTCPResolve (const boost::system::error_code& ecode, boost::asio::ip::tcp::resolver::iterator it, const i2p::data::IdentHash& ident, std::shared_ptr resolver);