From 01ef08b0e277e1be6ef16f40115956abe8d10e6c Mon Sep 17 00:00:00 2001 From: James Yonan Date: Tue, 24 Oct 2017 18:07:49 -0600 Subject: [PATCH] httpcli: added cancel_general_timeout. Also: CoarseTimer must always be reset when its associated AsioTimer is cancelled. Signed-off-by: James Yonan --- openvpn/ws/httpcli.hpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/openvpn/ws/httpcli.hpp b/openvpn/ws/httpcli.hpp index cad53aeb..d42bc99f 100644 --- a/openvpn/ws/httpcli.hpp +++ b/openvpn/ws/httpcli.hpp @@ -379,6 +379,7 @@ namespace openvpn { void streaming_start() { + cancel_general_timeout(); content_out_hold = false; if (is_deferred()) http_content_out_needed(); @@ -474,7 +475,10 @@ namespace openvpn { } } else if (init) - general_timer.cancel(); + { + general_timeout_coarse.reset(); + general_timer.cancel(); + } } void handle_request() // called by Asio @@ -491,6 +495,7 @@ namespace openvpn { general_timeout_duration = Time::Duration::seconds(to.general >= 0 ? to.general : config->general_timeout); + general_timeout_coarse.reset(); activity(true); if (alive) @@ -720,6 +725,12 @@ namespace openvpn { keepalive_timer->cancel(); } + void cancel_general_timeout() + { + general_timeout_duration.set_zero(); + general_timer.cancel(); + } + void general_timeout_handler(const openvpn_io::error_code& e) // called by Asio { if (!halt && !e)