diff --git a/src/plugins/output/forwarder/src/Connection.h b/src/plugins/output/forwarder/src/Connection.h index d137b5c4..ebe2f527 100644 --- a/src/plugins/output/forwarder/src/Connection.h +++ b/src/plugins/output/forwarder/src/Connection.h @@ -45,6 +45,7 @@ #include #include #include +#include #include @@ -55,7 +56,7 @@ class Connection; /// An error to be thrown on connection errors -class ConnectionError { +class ConnectionError : std::exception { public: ConnectionError(std::string message) : m_message(message) {} @@ -66,7 +67,7 @@ class ConnectionError { ConnectionError with_connection(std::shared_ptr &connection) const { return ConnectionError(m_message, connection); } - const char *what() const { return m_message.c_str(); } + const char *what() const noexcept { return m_message.c_str(); } std::shared_ptr *connection() const { return m_connection; } diff --git a/src/plugins/output/forwarder/src/Host.cpp b/src/plugins/output/forwarder/src/Host.cpp index a44a5fa4..6b1ecb3a 100644 --- a/src/plugins/output/forwarder/src/Host.cpp +++ b/src/plugins/output/forwarder/src/Host.cpp @@ -148,7 +148,11 @@ Host::advance_transfers() for (auto &p : m_session_to_connection) { Connection &connection = *p.second.get(); if (connection.check_connected()) { - connection.advance_transfers(); + try { + connection.advance_transfers(); + } catch (const ConnectionError &) { + // Ignore... + } } } }