From 8449f0a15bca9cfd0c1a727a9319cb08d83a6426 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Sat, 30 May 2020 22:37:24 +0300 Subject: [PATCH] LibIPC: Fix server crashes on client disconnects The server should always survive client communication errors. --- Libraries/LibIPC/ClientConnection.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Libraries/LibIPC/ClientConnection.h b/Libraries/LibIPC/ClientConnection.h index d1a7803425..0a821cd296 100644 --- a/Libraries/LibIPC/ClientConnection.h +++ b/Libraries/LibIPC/ClientConnection.h @@ -121,7 +121,8 @@ public: return; default: perror("Connection::post_message write"); - ASSERT_NOT_REACHED(); + shutdown(); + return; } } @@ -130,6 +131,9 @@ public: void drain_messages_from_client() { + if (!m_socket->is_open()) + return; + Vector bytes; for (;;) { u8 buffer[4096]; @@ -143,7 +147,8 @@ public: } if (nread < 0) { perror("recv"); - ASSERT_NOT_REACHED(); + shutdown(); + return; } bytes.append(buffer, nread); }