]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socketengine.cpp
Add new cross-module event system
[user/henk/code/inspircd.git] / src / socketengine.cpp
index 698b9061ffdbddce243fa160cc980d130cb70c89..1c91ccdea0c37f52d6cb5d1ac2c8469bd79004aa 100644 (file)
@@ -136,7 +136,7 @@ bool SocketEngine::BoundsCheckFd(EventHandler* eh)
 {
        if (!eh)
                return false;
-       if ((eh->GetFd() < 0) || (eh->GetFd() > GetMaxFds()))
+       if (eh->GetFd() < 0)
                return false;
        return true;
 }
@@ -147,13 +147,12 @@ int SocketEngine::Accept(EventHandler* fd, sockaddr *addr, socklen_t *addrlen)
        return accept(fd->GetFd(), addr, addrlen);
 }
 
-int SocketEngine::Close(EventHandler* fd)
+int SocketEngine::Close(EventHandler* eh)
 {
-#ifdef _WIN32
-       return closesocket(fd->GetFd());
-#else
-       return close(fd->GetFd());
-#endif
+       DelFd(eh);
+       int ret = Close(eh->GetFd());
+       eh->SetFd(-1);
+       return ret;
 }
 
 int SocketEngine::Close(int fd)
@@ -292,7 +291,13 @@ std::string SocketEngine::LastError()
        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;
+
+       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 ret;
 #endif
 }