From 91d01fb8ec20b4fad17c0f9acb36a46a922da147 Mon Sep 17 00:00:00 2001 From: eidheim Date: Sat, 21 Jan 2017 10:22:27 +0100 Subject: [PATCH] Fixes #101: added Config::timeout_connect --- client_http.hpp | 12 ++++++++---- client_https.hpp | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/client_http.hpp b/client_http.hpp index 2f17b87..e93cfe0 100644 --- a/client_http.hpp +++ b/client_http.hpp @@ -64,6 +64,8 @@ namespace SimpleWeb { public: /// Set timeout on requests in seconds. Default value: 0 (no timeout). size_t timeout=0; + /// Set connect timeout in seconds. Default value: 0 (Config::timeout is then used instead). + size_t timeout_connect=0; /// Set proxy server (server:port) std::string proxy_server; }; @@ -209,12 +211,14 @@ namespace SimpleWeb { virtual void connect()=0; - std::shared_ptr get_timeout_timer() { - if(config.timeout==0) + std::shared_ptr get_timeout_timer(size_t timeout=0) { + if(timeout==0) + timeout=config.timeout; + if(timeout==0) return nullptr; auto timer=std::make_shared(io_service); - timer->expires_from_now(boost::posix_time::seconds(config.timeout)); + timer->expires_from_now(boost::posix_time::seconds(timeout)); timer->async_wait([this](const boost::system::error_code& ec) { if(!ec) { close(); @@ -390,7 +394,7 @@ namespace SimpleWeb { socket=std::unique_ptr(new HTTP(io_service)); } - auto timer=get_timeout_timer(); + auto timer=get_timeout_timer(config.timeout_connect); boost::asio::async_connect(*socket, it, [this, timer] (const boost::system::error_code &ec, boost::asio::ip::tcp::resolver::iterator /*it*/){ if(timer) diff --git a/client_https.hpp b/client_https.hpp index 7e71a1d..248f5b1 100644 --- a/client_https.hpp +++ b/client_https.hpp @@ -53,7 +53,7 @@ namespace SimpleWeb { socket=std::unique_ptr(new HTTPS(io_service, context)); } - auto timer=get_timeout_timer(); + auto timer=get_timeout_timer(config.timeout_connect); boost::asio::async_connect(socket->lowest_layer(), it, [this, timer] (const boost::system::error_code &ec, boost::asio::ip::tcp::resolver::iterator /*it*/){ if(timer)