X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsocketengine.cpp;h=4a9a2ef10539e1b0c50d5c77fbc02e6aa6b49227;hb=50dd3523a3529fe542ec065fa68fb415a6b0e77a;hp=cbdfb56514944c2363a598df0a7d84546f7b7296;hpb=47332d6e9b990498dd35457090dd8983d8aae8d3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/socketengine.cpp b/src/socketengine.cpp index cbdfb5651..4a9a2ef10 100644 --- a/src/socketengine.cpp +++ b/src/socketengine.cpp @@ -256,16 +256,31 @@ void SocketEngine::GetStats(float &kbitpersec_in, float &kbitpersec_out, float & kbitpersec_out = out_kbit / 1024; } -bool SocketEngine::IgnoreError() +std::string SocketEngine::LastError() { - if (errno == EAGAIN) - return true; +#ifndef _WIN32 + return strerror(errno); +#else + char szErrorString[500]; + DWORD dwErrorCode = WSAGetLastError(); + if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)szErrorString, _countof(szErrorString), NULL) == 0) + sprintf_s(szErrorString, _countof(szErrorString), "Error code: %u", dwErrorCode); -#ifdef _WIN32 - if (WSAGetLastError() == WSAEWOULDBLOCK) - return true; -#endif + std::string::size_type p; + std::string ret = szErrorString; + while ((p = ret.find_last_of("\r\n")) != std::string::npos) + ret.erase(p, 1); - return false; + return ret; +#endif } +std::string SocketEngine::GetError(int errnum) +{ +#ifndef _WIN32 + return strerror(errnum); +#else + WSASetLastError(errnum); + return LastError(); +#endif +}