X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsocketengine.cpp;h=219d154f276df68e7e3beb386f2ca01ec2146dc7;hb=ba7431b4fd6c62dd04d252e769e825769accb2a9;hp=cbdfb56514944c2363a598df0a7d84546f7b7296;hpb=47332d6e9b990498dd35457090dd8983d8aae8d3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/socketengine.cpp b/src/socketengine.cpp index cbdfb5651..219d154f2 100644 --- a/src/socketengine.cpp +++ b/src/socketengine.cpp @@ -60,7 +60,7 @@ void SocketEngine::ChangeEventMask(EventHandler* eh, int change) new_m &= ~FD_WANT_READ_MASK; if (change & FD_WANT_WRITE_MASK) new_m &= ~FD_WANT_WRITE_MASK; - + // if adding a trial read/write, insert it into the set if (change & FD_TRIAL_NOTE_MASK && !(old_m & FD_TRIAL_NOTE_MASK)) trials.insert(eh->GetFd()); @@ -256,16 +256,25 @@ 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; - -#ifdef _WIN32 - if (WSAGetLastError() == WSAEWOULDBLOCK) - 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); + return szErrorString; #endif - - return false; } +std::string SocketEngine::GetError(int errnum) +{ +#ifndef _WIN32 + return strerror(errnum); +#else + WSASetLastError(errnum); + return LastError(); +#endif +}