diff --git a/charybdis/console.cc b/charybdis/console.cc index 53ce9b5ee..de421a894 100644 --- a/charybdis/console.cc +++ b/charybdis/console.cc @@ -184,8 +184,14 @@ catch(const std::exception &e) std::cout << "***\n"; std::cout << "*** The console session has ended: " << e.what() << "\n"; std::cout << "***" << std::endl; + + std::cout << std::flush; + std::cout.clear(); + + std::cerr << std::flush; + std::cerr.clear(); + ircd::log::debug("The console session has ended: %s", e.what()); - return; } bool diff --git a/ircd/logger.cc b/ircd/logger.cc index 858a7c853..60e2a10ca 100644 --- a/ircd/logger.cc +++ b/ircd/logger.cc @@ -207,6 +207,12 @@ ircd::log::console_quiet::~console_quiet() { std::copy(begin(quieted_out), end(quieted_out), begin(console_out)); std::copy(begin(quieted_err), end(quieted_err), begin(console_err)); + + std::cout << std::flush; + std::cout.clear(); + + std::cerr << std::flush; + std::cerr.clear(); } ircd::log::log::log(const std::string &name) @@ -406,7 +412,7 @@ ircd::log::suffix(const facility &fac) if(console_flush[fac] || std::current_exception()) { - std::flush(stream); + stream << std::flush; assert(stream.good()); } });