From cb5955ccc57efa71d39c1c50abf7100a7dd5f971 Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Sat, 11 May 2013 09:40:19 -0500 Subject: [PATCH] defines timers before using them --- websocketpp/transport/asio/connection.hpp | 14 ++++++++++---- websocketpp/transport/asio/endpoint.hpp | 10 +++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp index b7d67192da..6298f45c04 100644 --- a/websocketpp/transport/asio/connection.hpp +++ b/websocketpp/transport/asio/connection.hpp @@ -388,7 +388,8 @@ protected: m_alog.write(log::alevel::devel,"asio connection post_init"); } - timer_ptr post_timer = set_timer( + timer_ptr post_timer; + post_timer = set_timer( config::timeout_socket_post_init, lib::bind( &type::handle_post_init_timeout, @@ -425,7 +426,11 @@ protected: log_err(log::elevel::devel,"asio handle_post_init_timeout",ec); ret_ec = ec; } else { - ret_ec = make_error_code(transport::error::timeout); + if (socket_con_type::get_ec()) { + ret_ec = socket_con_type::get_ec(); + } else { + ret_ec = make_error_code(transport::error::timeout); + } } m_alog.write(log::alevel::devel,"Asio transport post-init timed out"); @@ -785,7 +790,8 @@ protected: m_alog.write(log::alevel::devel,"asio connection async_shutdown"); } - timer_ptr shutdown_timer = set_timer( + timer_ptr shutdown_timer; + shutdown_timer = set_timer( config::timeout_socket_shutdown, lib::bind( &type::handle_async_shutdown_timeout, @@ -815,7 +821,7 @@ protected: if (ec) { if (ec == transport::error::operation_aborted) { m_alog.write(log::alevel::devel, - "asio socket shutdown cancelled"); + "asio socket shutdown timer cancelled"); return; } diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp index 08edcaa722..ab3e61ac69 100644 --- a/websocketpp/transport/asio/endpoint.hpp +++ b/websocketpp/transport/asio/endpoint.hpp @@ -438,7 +438,9 @@ protected: "starting async DNS resolve for "+host+":"+port); } - timer_ptr dns_timer = set_timer( + timer_ptr dns_timer; + + dns_timer = set_timer( config::timeout_dns_resolve, lib::bind( &type::handle_resolve_timeout, @@ -491,7 +493,7 @@ protected: connect_handler callback, const boost::system::error_code& ec, boost::asio::ip::tcp::resolver::iterator iterator) { - if (ec == boost::asio::error::operation_aborted || + if (ec == boost::asio::error::operation_aborted || dns_timer->expires_from_now().is_negative()) { m_alog->write(log::alevel::devel,"async_resolve cancelled"); @@ -520,7 +522,9 @@ protected: m_alog->write(log::alevel::devel,"Starting async connect"); - timer_ptr con_timer = set_timer( + timer_ptr con_timer; + + con_timer = set_timer( config::timeout_connect, lib::bind( &type::handle_resolve_timeout,