mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-22 05:27:19 +00:00
Log some recvfrom errors on linux (#885)
This commit is contained in:
parent
213c3c37b0
commit
1ed3af63b9
51
thirdparty/raknet/Source/SocketLayer.cpp
vendored
51
thirdparty/raknet/Source/SocketLayer.cpp
vendored
@ -417,8 +417,14 @@ int SocketLayer::RecvFrom( const SOCKET s, RakPeer *rakPeer, int *errorCode, uns
|
|||||||
assert( 0 );
|
assert( 0 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
*errorCode = -1;
|
//*errorCode = -1;
|
||||||
return -1;
|
#ifdef __linux__
|
||||||
|
char str[INET_ADDRSTRLEN];
|
||||||
|
inet_ntop(AF_INET, &(sa.sin_addr), str, INET_ADDRSTRLEN);
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: empty datagram from %s", str);
|
||||||
|
#endif
|
||||||
|
//return -1;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( len > 0 )
|
if ( len > 0 )
|
||||||
@ -479,6 +485,47 @@ int SocketLayer::RecvFrom( const SOCKET s, RakPeer *rakPeer, int *errorCode, uns
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#elif defined(__linux__)
|
||||||
|
if (len < -1)
|
||||||
|
{
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: Unexpected return value.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int local_errno = errno;
|
||||||
|
if (local_errno == EAGAIN || local_errno == EWOULDBLOCK)
|
||||||
|
{
|
||||||
|
return 0; // no data
|
||||||
|
}
|
||||||
|
|
||||||
|
if (local_errno == EINTR)
|
||||||
|
{
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: The receive was interrupted by delivery of a signal before any data were available.");
|
||||||
|
return 0; // log, but ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
char str[INET_ADDRSTRLEN];
|
||||||
|
inet_ntop(AF_INET, &(sa.sin_addr), str, INET_ADDRSTRLEN);
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: Error receiving data from %s", str);
|
||||||
|
|
||||||
|
switch (local_errno) {
|
||||||
|
case EINVAL:
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: Invalid argument passed."); break;
|
||||||
|
case ENOMEM:
|
||||||
|
case ENOBUFS:
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: Could not allocate memory for recvmsg()."); break;
|
||||||
|
case EFAULT:
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: The receive buffer pointer(s) point outside the process's address space."); break;
|
||||||
|
case EBADF:
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: The argument sockfd is an invalid descriptor."); break;
|
||||||
|
case ENOTSOCK:
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: The argument sockfd does not refer to a socket."); break;
|
||||||
|
case EPIPE:
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: The connection was unexpectedly closed or shut down by the other end. "); break;
|
||||||
|
default:
|
||||||
|
printf("[RakNet] SocketLayer::RecvFrom: Unknown Error %d", local_errno); break;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user