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