From feb46b978e933f001c8016825a51b4d52e402ee2 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 10 Aug 2018 15:51:17 -0700 Subject: [PATCH] Handle EINTR to fix streaming with GDB attached --- src/PlatformSockets.c | 1 + src/PlatformSockets.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/PlatformSockets.c b/src/PlatformSockets.c index 8396f21..472c488 100644 --- a/src/PlatformSockets.c +++ b/src/PlatformSockets.c @@ -89,6 +89,7 @@ int recvUdpSocket(SOCKET s, char* buffer, int size, int useSelect) { err = (int)recv(s, buffer, size, 0); if (err < 0 && (LastSocketError() == EWOULDBLOCK || + LastSocketError() == EINTR || LastSocketError() == EAGAIN)) { // Return 0 for timeout return 0; diff --git a/src/PlatformSockets.h b/src/PlatformSockets.h index d6b8816..d335391 100644 --- a/src/PlatformSockets.h +++ b/src/PlatformSockets.h @@ -12,6 +12,7 @@ #define SHUT_RDWR SD_BOTH #define EWOULDBLOCK WSAEWOULDBLOCK #define EAGAIN WSAEWOULDBLOCK +#define EINTR WSAEINTR typedef int SOCK_RET; typedef int SOCKADDR_LEN; @@ -53,8 +54,10 @@ typedef socklen_t SOCKADDR_LEN; #define TCP_NODELAY SCE_NET_TCP_NODELAY #undef EAGAIN #undef EWOULDBLOCK +#undef EINTR #define EAGAIN SCE_NET_EAGAIN #define EWOULDBLOCK SCE_NET_EWOULDBLOCK +#define EINTR SCE_NET_EINTR #define sockaddr_in6 sockaddr_in #define sin6_addr sin_addr