From 5f52127cf76f74e8c4021594c069fbb07cc0e8bb Mon Sep 17 00:00:00 2001 From: Jacob Champion Date: Tue, 15 Dec 2015 11:24:04 -0800 Subject: [PATCH] Always log errors during socket cancel cancel_socket_checked(), which logs any received errors, is now called consistently instead of the lower-level cancel_socket(). --- websocketpp/transport/asio/connection.hpp | 28 ++++++++++++++--------- websocketpp/transport/asio/endpoint.hpp | 2 +- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp index 2aaa8a2..b9f92ef 100644 --- a/websocketpp/transport/asio/connection.hpp +++ b/websocketpp/transport/asio/connection.hpp @@ -578,15 +578,7 @@ protected: } m_alog.write(log::alevel::devel, "Asio transport post-init timed out"); - lib::asio::error_code cec = socket_con_type::cancel_socket(); - if (cec) { - if (cec == lib::asio::error::operation_not_supported) { - // cancel not supported on this OS, ignore and log at dev level - m_alog.write(log::alevel::devel, "socket cancel not supported"); - } else { - log_err(log::elevel::warn, "socket cancel failed", cec); - } - } + cancel_socket_checked(); callback(ret_ec); } @@ -690,7 +682,7 @@ protected: } else { m_alog.write(log::alevel::devel, "asio handle_proxy_write timer expired"); - socket_con_type::cancel_socket(); + cancel_socket_checked(); callback(make_error_code(transport::error::timeout)); } } @@ -1105,7 +1097,7 @@ protected: m_alog.write(log::alevel::devel, "Asio transport socket shutdown timed out"); - socket_con_type::cancel_socket(); + cancel_socket_checked(); callback(ret_ec); } @@ -1154,6 +1146,20 @@ protected: } callback(tec); } + + /// Cancel the underlying socket and log any errors + void cancel_socket_checked() { + lib::asio::error_code cec = socket_con_type::cancel_socket(); + if (cec) { + if (cec == lib::asio::error::operation_not_supported) { + // cancel not supported on this OS, ignore and log at dev level + m_alog.write(log::alevel::devel, "socket cancel not supported"); + } else { + log_err(log::elevel::warn, "socket cancel failed", cec); + } + } + } + private: /// Convenience method for logging the code and message for an error_code template diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp index 1dd2378..d0af215 100644 --- a/websocketpp/transport/asio/endpoint.hpp +++ b/websocketpp/transport/asio/endpoint.hpp @@ -1027,7 +1027,7 @@ protected: } m_alog->write(log::alevel::devel,"TCP connect timed out"); - tcon->cancel_socket(); + tcon->cancel_socket_checked(); callback(ret_ec); }