From 04e1872b5373a4b0bde548e9e42a6c2fc74c7e5d Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Wed, 28 Oct 2020 11:24:09 +0100 Subject: common 81f518d: TCPSocket: let recv throw Interrupted on EINTR --- lib/Socket.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib/Socket.cpp') diff --git a/lib/Socket.cpp b/lib/Socket.cpp index bc1b179..d41ed1c 100644 --- a/lib/Socket.cpp +++ b/lib/Socket.cpp @@ -630,8 +630,13 @@ ssize_t TCPSocket::recv(void *buffer, size_t length, int flags) { ssize_t ret = ::recv(m_sock, buffer, length, flags); if (ret == -1) { - std::string errstr(strerror(errno)); - throw std::runtime_error("TCP receive error: " + errstr); + if (errno == EINTR) { + throw Interrupted(); + } + else { + std::string errstr(strerror(errno)); + throw std::runtime_error("TCP receive error: " + errstr); + } } return ret; } -- cgit v1.2.3