Skip to content

Commit

Permalink
Merge pull request #8796 from sepalani/so-econn
Browse files Browse the repository at this point in the history
Socket: Fix ENOTCONN error code
  • Loading branch information
delroth committed Jun 19, 2020
2 parents d6341c4 + dc2733c commit ebd08c8
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions Source/Core/Core/IOS/Network/Socket.cpp
Expand Up @@ -51,7 +51,12 @@ char* WiiSockMan::DecodeError(s32 ErrorCode)
#endif
}

static s32 TranslateErrorCode(s32 native_error, bool isRW)
// The following functions can return
// - EAGAIN / EWOULDBLOCK: send(to), recv(from), accept
// - EINPROGRESS: connect, bind
// - WSAEWOULDBLOCK: send(to), recv(from), accept, connect
// On Windows is_rw is used to correct the return value for connect
static s32 TranslateErrorCode(s32 native_error, bool is_rw)
{
switch (native_error)
{
Expand All @@ -67,7 +72,7 @@ static s32 TranslateErrorCode(s32 native_error, bool isRW)
case ERRORCODE(EISCONN):
return -SO_EISCONN;
case ERRORCODE(ENOTCONN):
return -SO_EAGAIN; // After proper blocking SO_EAGAIN shouldn't be needed...
return -SO_ENOTCONN;
case ERRORCODE(EINPROGRESS):
return -SO_EINPROGRESS;
case ERRORCODE(EALREADY):
Expand All @@ -86,14 +91,7 @@ static s32 TranslateErrorCode(s32 native_error, bool isRW)
case ERRORCODE(ENETRESET):
return -SO_ENETRESET;
case EITHER(WSAEWOULDBLOCK, EAGAIN):
if (isRW)
{
return -SO_EAGAIN; // EAGAIN
}
else
{
return -SO_EINPROGRESS; // EINPROGRESS
}
return (is_rw) ? (-SO_EAGAIN) : (-SO_EINPROGRESS);
default:
return -1;
}
Expand Down

0 comments on commit ebd08c8

Please sign in to comment.