1
0

Now showing proper error messages when sockets fail :)

Crossplatform GetLastError function in cSocket

git-svn-id: http://mc-server.googlecode.com/svn/trunk@234 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
faketruth
2012-02-05 16:24:16 +00:00
parent d6925efab3
commit ab95abb6bd
5 changed files with 30 additions and 18 deletions

View File

@@ -92,7 +92,7 @@ void cSocket::CloseSocket()
const char * cSocket::GetLastErrorString()
AString cSocket::GetErrorString( int a_ErrNo )
{
#define CASE_AND_RETURN(x) case x: return #x
@@ -118,7 +118,27 @@ const char * cSocket::GetLastErrorString()
}
return "No Error";
#else
return "GetLastErrorString() only works on Windows";
char buffer[ 256 ];
if( strerror_r( errno, buffer, 256 ) == 0 )
{
return AString( buffer );
}
else
{
return "Error on getting error string!";
}
#endif
}
int cSocket::GetLastError()
{
#ifdef _WIN32
return WSAGetLastError();
#else
return errno;
#endif
}
@@ -176,16 +196,7 @@ int cSocket::Bind(SockAddr_In& a_Address)
local.sin_port=htons((u_short)a_Address.Port);
int res = bind(m_Socket, (sockaddr*)&local, sizeof(local));
if (res != 0)
{
#ifdef _WIN32
LOGWARNING("bind() failed for port %d, WSAGLE = %d", a_Address.Port, WSAGetLastError());
#else // _WIN32
LOGWARNING("bind() failed for port %d, errno = %d", a_Address.Port, errno);
#endif // else _WIN32
}
return res;
return bind(m_Socket, (sockaddr*)&local, sizeof(local));
}