From 25ba08abcfe09f35b541062f667a366ec4c57ffd Mon Sep 17 00:00:00 2001 From: hagen Date: Tue, 19 Jul 2016 00:00:00 +0000 Subject: [PATCH] * Reseed.cpp : use new http classes --- Reseed.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/Reseed.cpp b/Reseed.cpp index 096035da..e8969583 100644 --- a/Reseed.cpp +++ b/Reseed.cpp @@ -14,6 +14,7 @@ #include "Log.h" #include "Identity.h" #include "NetDb.h" +#include "HTTP.h" #include "util.h" namespace i2p @@ -372,13 +373,19 @@ namespace data std::string Reseeder::HttpsRequest (const std::string& address) { - i2p::util::http::url u(address); - if (u.port_ == 80) u.port_ = 443; + i2p::http::URL url; + if (!url.parse(address)) { + LogPrint(eLogError, "Reseed: failed to parse url: ", address); + return ""; + } + url.schema = "https"; + if (!url.port) + url.port = 443; boost::asio::io_service service; boost::system::error_code ecode; - auto it = boost::asio::ip::tcp::resolver(service).resolve ( - boost::asio::ip::tcp::resolver::query (u.host_, std::to_string (u.port_)), ecode); + auto it = boost::asio::ip::tcp::resolver(service).resolve ( + boost::asio::ip::tcp::resolver::query (url.host, std::to_string(url.port)), ecode); if (!ecode) { boost::asio::ssl::context ctx(service, boost::asio::ssl::context::sslv23); @@ -390,12 +397,12 @@ namespace data s.handshake (boost::asio::ssl::stream_base::client, ecode); if (!ecode) { - LogPrint (eLogInfo, "Reseed: Connected to ", u.host_, ":", u.port_); - // send request - std::stringstream ss; - ss << "GET " << u.path_ << " HTTP/1.1\r\nHost: " << u.host_ - << "\r\nAccept: */*\r\n" << "User-Agent: Wget/1.11.4\r\n" << "Connection: close\r\n\r\n"; - s.write_some (boost::asio::buffer (ss.str ())); + LogPrint (eLogDebug, "Reseed: Connected to ", url.host, ":", url.port); + i2p::http::HTTPReq req; + req.uri = url.to_string(); + req.add_header("User-Agent", "Wget/1.11.4"); + req.add_header("Connection", "close"); + s.write_some (boost::asio::buffer (req.to_string())); // read response std::stringstream rs; char response[1024]; size_t l = 0; @@ -412,10 +419,10 @@ namespace data LogPrint (eLogError, "Reseed: SSL handshake failed: ", ecode.message ()); } else - LogPrint (eLogError, "Reseed: Couldn't connect to ", u.host_, ": ", ecode.message ()); + LogPrint (eLogError, "Reseed: Couldn't connect to ", url.host, ": ", ecode.message ()); } else - LogPrint (eLogError, "Reseed: Couldn't resolve address ", u.host_, ": ", ecode.message ()); + LogPrint (eLogError, "Reseed: Couldn't resolve address ", url.host, ": ", ecode.message ()); return ""; } }