From 9d47eef98f62a0068c3e6c9f8c15aaa2e0df6276 Mon Sep 17 00:00:00 2001 From: Jan Moringen Date: Wed, 30 Apr 2014 10:07:41 +0200 Subject: [PATCH 2/2] Never abort when printing socket exceptions in src/rsb/transport/socket/BusConnection.cpp refs #1846 * src/rsb/transport/socket/BusConnection.cpp (safeSocketExceptionString): new function; return exception message string ignoring all exceptions (BusConnection::performSafeCleanup): use safeSocketExceptionString (BusConnection::handleReadLength): likewise --- src/rsb/transport/socket/BusConnection.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/rsb/transport/socket/BusConnection.cpp b/src/rsb/transport/socket/BusConnection.cpp index c2c8d86..fd0e329 100644 --- a/src/rsb/transport/socket/BusConnection.cpp +++ b/src/rsb/transport/socket/BusConnection.cpp @@ -46,6 +46,14 @@ namespace rsb { namespace transport { namespace socket { +std::string safeSocketExceptionString(const std::exception& exception) { + try { + return exception.what(); + } catch (...) { + return ""; + } +} + BusConnection::BusConnection(BusPtr bus, SocketPtr socket, bool client, @@ -158,8 +166,8 @@ void BusConnection::performSafeCleanup(const string& context) { try { disconnect(); } catch (const std::exception& e) { - RSCDEBUG(logger, "Failed to disconnect (in " << context << "): " - << e.what()) + RSCDEBUG(this->logger, "Failed to disconnect (in " << context << "): " + << safeSocketExceptionString(e)); } } } @@ -183,7 +191,8 @@ void BusConnection::handleReadLength(const boost::system::error_code& error, try { shutdown(); } catch (const std::exception& e) { - RSCWARN(this->logger, "Failed to shut down socket: " << e.what()); + RSCWARN(this->logger, "Failed to shut down socket: " + << safeSocketExceptionString(e)); } } performSafeCleanup("handleReadLength[eof]"); -- 1.7.9.5