Handle EAGAIN and EINPROGRESS where appropriate as well as EWOULDBLOCK

This commit is contained in:
baldurk
2016-08-23 11:31:01 +02:00
parent 4bc3dbcc9e
commit 1b06e2b553
+5 -5
View File
@@ -98,7 +98,7 @@ Socket *Socket::AcceptClient(bool wait)
int err = errno;
if(err != EWOULDBLOCK)
if(err != EWOULDBLOCK && err != EAGAIN)
{
RDCWARN("accept: %d", err);
Shutdown();
@@ -130,7 +130,7 @@ bool Socket::SendDataBlocking(const void *buf, uint32_t length)
{
int err = errno;
if(err == EWOULDBLOCK)
if(err == EWOULDBLOCK || err == EAGAIN)
{
ret = 0;
}
@@ -168,7 +168,7 @@ bool Socket::IsRecvDataWaiting()
{
int err = errno;
if(err == EWOULDBLOCK)
if(err == EWOULDBLOCK || err == EAGAIN)
{
ret = 0;
}
@@ -208,7 +208,7 @@ bool Socket::RecvDataBlocking(void *buf, uint32_t length)
{
int err = errno;
if(err == EWOULDBLOCK)
if(err == EWOULDBLOCK || err == EAGAIN)
{
ret = 0;
}
@@ -306,7 +306,7 @@ Socket *CreateClientSocket(const char *host, uint16_t port, int timeoutMS)
int err = errno;
if(err == EWOULDBLOCK)
if(err == EWOULDBLOCK || err == EINPROGRESS)
{
timeval timeout;
timeout.tv_sec = (timeoutMS / 1000);