From f3c8233e7f48253b4be0d1d37bd44a80e8b2e996 Mon Sep 17 00:00:00 2001 From: Prashanth Mundkur Date: Wed, 22 Mar 2017 17:33:06 -0700 Subject: [PATCH] Fix a socket leak when it is closed remotely Fixes #2346 --- repos/gems/src/server/tcp_terminal/main.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repos/gems/src/server/tcp_terminal/main.cc b/repos/gems/src/server/tcp_terminal/main.cc index 9e185983cd..3d0562ddc9 100644 --- a/repos/gems/src/server/tcp_terminal/main.cc +++ b/repos/gems/src/server/tcp_terminal/main.cc @@ -194,6 +194,7 @@ class Open_socket : public Genode::List::Element _read_buf_bytes_used = ::read(_sd, _read_buf, sizeof(_read_buf)); if (_read_buf_bytes_used == 0) { + close(_sd); _sd = -1; return; } @@ -406,7 +407,7 @@ Open_socket::Open_socket(int tcp_port) Open_socket::~Open_socket() { - close(_sd); + if (_sd != -1) close(_sd); open_socket_pool()->remove(this); }