From ab95abb6bde0073ebb869624332adf028aac8dd7 Mon Sep 17 00:00:00 2001 From: faketruth Date: Sun, 5 Feb 2012 16:24:16 +0000 Subject: 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 --- source/cSocket.cpp | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'source/cSocket.cpp') diff --git a/source/cSocket.cpp b/source/cSocket.cpp index 10ccec3c3..f8b0bed20 100644 --- a/source/cSocket.cpp +++ b/source/cSocket.cpp @@ -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)); } -- cgit v1.2.3