From 70c92d6cea9145884d15fbd397642bf09ef5f48c Mon Sep 17 00:00:00 2001 From: Seva <seva@binarytrails.net> Date: Thu, 29 Aug 2019 19:19:09 -0400 Subject: [PATCH] http: replace service by url --- include/opendht/http.h | 7 +++---- src/dht_proxy_server.cpp | 4 ++-- src/http.cpp | 24 +++++++++--------------- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/include/opendht/http.h b/include/opendht/http.h index 6eab52c8..bf756dad 100644 --- a/include/opendht/http.h +++ b/include/opendht/http.h @@ -142,7 +142,7 @@ public: Resolver(asio::io_context& ctx, const std::string& url, std::shared_ptr<dht::Logger> logger = {}); Resolver(asio::io_context& ctx, const std::string& host, const std::string& service = "80", - std::shared_ptr<dht::Logger> logger = {}); + const bool ssl = false, std::shared_ptr<dht::Logger> logger = {}); // use already resolved endpoints with classes using this resolver Resolver(asio::io_context& ctx, std::vector<asio::ip::tcp::endpoint> endpoints, @@ -160,11 +160,10 @@ private: std::mutex mutex_; + Url url_; asio::error_code ec_; - std::string service_; asio::ip::tcp::resolver resolver_; std::vector<asio::ip::tcp::endpoint> endpoints_; - Url url_; bool completed_ {false}; std::queue<ResolverCb> cbs_; @@ -196,7 +195,7 @@ public: // resolves implicitly Request(asio::io_context& ctx, const std::string& url, std::shared_ptr<dht::Logger> logger = {}); Request(asio::io_context& ctx, const std::string& host, const std::string& service = "80", - std::shared_ptr<dht::Logger> logger = {}); + const bool ssl = false, std::shared_ptr<dht::Logger> logger = {}); // user defined resolver Request(asio::io_context& ctx, std::shared_ptr<Resolver> resolver, std::shared_ptr<dht::Logger> logger = {}); diff --git a/src/dht_proxy_server.cpp b/src/dht_proxy_server.cpp index 1f935716..a97ca78b 100644 --- a/src/dht_proxy_server.cpp +++ b/src/dht_proxy_server.cpp @@ -860,8 +860,8 @@ DhtProxyServer::sendPushNotification(const std::string& token, Json::Value&& jso if (pushServer_.empty()) return; - auto request = std::make_shared<http::Request>(io_context(), pushHostPort_.first, - pushHostPort_.second, logger_); + auto request = std::make_shared<http::Request>(io_context(), pushHostPort_.first, pushHostPort_.second, + httpsServer_ ? true : false, logger_); auto reqid = request->id(); try { request->set_target("/api/push"); diff --git a/src/http.cpp b/src/http.cpp index 84a7f9bc..97855b05 100644 --- a/src/http.cpp +++ b/src/http.cpp @@ -306,26 +306,26 @@ Connection::timeout(const std::chrono::seconds timeout, HandlerCb cb) // Resolver Resolver::Resolver(asio::io_context& ctx, const std::string& url, std::shared_ptr<dht::Logger> logger) - : resolver_(ctx), url_(url), logger_(logger) + : url_(url), resolver_(ctx), logger_(logger) { - service_ = url_.service; resolve(url_.host, url_.service); } Resolver::Resolver(asio::io_context& ctx, const std::string& host, const std::string& service, - std::shared_ptr<dht::Logger> logger) + const bool ssl, std::shared_ptr<dht::Logger> logger) : resolver_(ctx), logger_(logger) { - service_ = service; - resolve(host, service); + url_.host = host; + url_.service = service; + url_.protocol = (ssl ? "https" : "http"); + resolve(url_.host, url_.service); } Resolver::Resolver(asio::io_context& ctx, std::vector<asio::ip::tcp::endpoint> endpoints, const bool ssl, std::shared_ptr<dht::Logger> logger) : resolver_(ctx), logger_(logger) { - if (ssl) - url_.protocol = "https"; + url_.protocol = (ssl ? "https" : "http"); endpoints_ = std::move(endpoints); completed_ = true; } @@ -351,12 +351,6 @@ Resolver::get_url() const return url_; } -std::string -Resolver::get_service() const -{ - return service_; -} - void Resolver::add_callback(ResolverCb cb) { @@ -420,11 +414,11 @@ Request::Request(asio::io_context& ctx, const std::string& url, std::shared_ptr< } Request::Request(asio::io_context& ctx, const std::string& host, const std::string& service, - std::shared_ptr<dht::Logger> logger) + const bool ssl, std::shared_ptr<dht::Logger> logger) : id_(Request::ids_++), ctx_(ctx), logger_(logger) { cbs_ = std::make_unique<Callbacks>(); - resolver_ = std::make_shared<Resolver>(ctx, host, service, logger_); + resolver_ = std::make_shared<Resolver>(ctx, host, service, ssl, logger_); set_target(resolver_->get_url().target); } -- GitLab