From 0bad880e7296634425c9247bd16b6ec6b751b61a Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 26 Sep 2018 13:39:26 +0100 Subject: [PATCH] Handle EINTR errno correctly --- renderdoc/os/posix/posix_network.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/renderdoc/os/posix/posix_network.cpp b/renderdoc/os/posix/posix_network.cpp index beab9b38f..ca5647304 100644 --- a/renderdoc/os/posix/posix_network.cpp +++ b/renderdoc/os/posix/posix_network.cpp @@ -118,7 +118,7 @@ Socket *Socket::AcceptClient(bool wait) int err = errno; - if(err != EWOULDBLOCK && err != EAGAIN) + if(err != EWOULDBLOCK && err != EAGAIN && err != EINTR) { RDCWARN("accept: %s", errno_string(err).c_str()); Shutdown(); @@ -159,7 +159,7 @@ bool Socket::SendDataBlocking(const void *buf, uint32_t length) { int err = errno; - if(err == EWOULDBLOCK || err == EAGAIN) + if(err == EWOULDBLOCK || err == EAGAIN || err == EINTR) { RDCWARN("Timeout in send"); Shutdown(); @@ -201,7 +201,7 @@ bool Socket::IsRecvDataWaiting() { int err = errno; - if(err == EWOULDBLOCK || err == EAGAIN) + if(err == EWOULDBLOCK || err == EAGAIN || err == EINTR) { ret = 0; } @@ -233,7 +233,7 @@ bool Socket::RecvDataNonBlocking(void *buf, uint32_t &length) length = 0; int err = errno; - if(err == EWOULDBLOCK || err == EAGAIN) + if(err == EWOULDBLOCK || err == EAGAIN || err == EINTR) { return true; } @@ -282,7 +282,7 @@ bool Socket::RecvDataBlocking(void *buf, uint32_t length) { int err = errno; - if(err == EWOULDBLOCK || err == EAGAIN) + if(err == EWOULDBLOCK || err == EAGAIN || err == EINTR) { RDCWARN("Timeout in recv"); Shutdown(); @@ -438,7 +438,7 @@ Socket *CreateClientSocket(const char *host, uint16_t port, int timeoutMS) int err = errno; - if(err == EWOULDBLOCK || err == EINPROGRESS) + if(err == EWOULDBLOCK || err == EINPROGRESS || err == EINTR) { timeval timeout; timeout.tv_sec = (timeoutMS / 1000);