From 7ffbe8bfd846d017c21087e43ecef1177a40a80b Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Fri, 1 Feb 2013 07:25:44 -0600 Subject: [PATCH] moves bad_connection error handling into get_con_from_hdl --- websocketpp/endpoint.hpp | 5 ++++- websocketpp/impl/endpoint_impl.hpp | 20 ++++++-------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/websocketpp/endpoint.hpp b/websocketpp/endpoint.hpp index de4b5f668b..d6e0ec7a8d 100644 --- a/websocketpp/endpoint.hpp +++ b/websocketpp/endpoint.hpp @@ -287,10 +287,13 @@ protected: * * @return the connection_ptr. May be NULL if the handle was invalid. */ - connection_ptr get_con_from_hdl(connection_hdl hdl) { + connection_ptr get_con_from_hdl(connection_hdl hdl, lib::error_code & ec) { scoped_lock_type lock(m_mutex); connection_ptr con = lib::static_pointer_cast( hdl.lock()); + if (!con) { + ec = error::make_error_code(error::bad_connection); + } return con; } diff --git a/websocketpp/impl/endpoint_impl.hpp b/websocketpp/impl/endpoint_impl.hpp index 23e1c64013..591dd01301 100644 --- a/websocketpp/impl/endpoint_impl.hpp +++ b/websocketpp/impl/endpoint_impl.hpp @@ -91,11 +91,8 @@ template void endpoint::interrupt(connection_hdl hdl, lib::error_code & ec) { - connection_ptr con = get_con_from_hdl(hdl); - if (!con) { - ec = error::make_error_code(error::bad_connection); - return; - } + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} m_alog.write(log::alevel::devel,"Interrupting connection"+con.get()); @@ -113,11 +110,8 @@ template void endpoint::send(connection_hdl hdl, const std::string& payload, frame::opcode::value op, lib::error_code & ec) { - connection_ptr con = get_con_from_hdl(hdl); - if (!con) { - ec = error::make_error_code(error::bad_connection); - return; - } + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} ec = con->send(payload,op); } @@ -135,11 +129,9 @@ template void endpoint::send(connection_hdl hdl, message_ptr msg, lib::error_code & ec) { - connection_ptr con = get_con_from_hdl(hdl); - if (!con) { ec = error::make_error_code(error::bad_connection); - return; - } + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} ec = con->send(msg); }