From ddb9a6b4772c8f7c039791e2f46697fdddff5b83 Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 21 Jan 2014 18:01:11 -0500 Subject: [PATCH] check if IP address is valid --- NTCPSession.cpp | 2 +- NTCPSession.h | 2 +- RouterInfo.cpp | 11 ++++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/NTCPSession.cpp b/NTCPSession.cpp index 061dbbac..3e3d551d 100644 --- a/NTCPSession.cpp +++ b/NTCPSession.cpp @@ -517,7 +517,7 @@ namespace ntcp } - NTCPClient::NTCPClient (boost::asio::io_service& service, boost::asio::ip::address& address, + NTCPClient::NTCPClient (boost::asio::io_service& service, const boost::asio::ip::address& address, int port, i2p::data::RouterInfo& in_RouterInfo): NTCPSession (service, in_RouterInfo), m_Endpoint (address, port) diff --git a/NTCPSession.h b/NTCPSession.h index 512d65ec..71cf5af9 100644 --- a/NTCPSession.h +++ b/NTCPSession.h @@ -144,7 +144,7 @@ namespace ntcp { public: - NTCPClient (boost::asio::io_service& service, boost::asio::ip::address& address, int port, i2p::data::RouterInfo& in_RouterInfo); + NTCPClient (boost::asio::io_service& service, const boost::asio::ip::address& address, int port, i2p::data::RouterInfo& in_RouterInfo); private: diff --git a/RouterInfo.cpp b/RouterInfo.cpp index 5125bfa9..c630fac5 100644 --- a/RouterInfo.cpp +++ b/RouterInfo.cpp @@ -101,7 +101,16 @@ namespace data r += ReadString (value, s); s.seekg (1, std::ios_base::cur); r++; // ; if (!strcmp (key, "host")) - address.host = boost::asio::ip::address::from_string (value); + { + boost::system::error_code ecode; + address.host = boost::asio::ip::address::from_string (value, ecode); + if (ecode) + { + // TODO: we should try to resolve address here + LogPrint ("Unexpected address ", value); + SetUnreachable (true); + } + } else if (!strcmp (key, "port")) address.port = boost::lexical_cast(value); }