From 118e8ee6e1c5f02522f49ea78bbbf7a8629be73b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 30 Apr 2021 11:51:05 +0200 Subject: [PATCH] ssh_terminal: flush buffer on Terminal cleanup Issue #4095. --- repos/gems/src/server/ssh_terminal/server.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/repos/gems/src/server/ssh_terminal/server.cc b/repos/gems/src/server/ssh_terminal/server.cc index 49eff03210..c420b7d5e7 100644 --- a/repos/gems/src/server/ssh_terminal/server.cc +++ b/repos/gems/src/server/ssh_terminal/server.cc @@ -378,6 +378,12 @@ void Ssh::Server::detach_terminal(Ssh::Terminal &conn) auto invalidate_terminal = [&] (Session &sess) { if (sess.terminal != &conn) { return; } sess.terminal_detached = true; + + /* flush before destroying the terminal */ + Libc::with_libc([&] { + try { sess.terminal->send(sess.channel); } + catch (...) { } + }); }; _sessions.for_each(invalidate_terminal);