Server crashes after closesocket
I have multithreading application, it's periodically polling a few hundred devices. Each thread serves one device, its socket and other descriptors are encapsulated at individual object, so no shared descriptors. Occasionally application crashes after closesocket(fSock), when I try set descriptor fSock to 0. I assume, I should not set fSock = 0, if closesocket(fSock) returns SOCKET_ERROR. Or is there any other reason? My code: bool _EthDev::Connect() { int sockErr, ret, i, j; int szOut = sizeof(sockaddr_in); // create socket if ((fSock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { sockErr = GetLastError(); Log("Invalid socket err %d", sockErr); fSock = 0; return false; } // set fast closing socket (by RST) linger sLinger; sLinger.l_onoff = 1; sLinger.l_linger = 0; if (sockErr = setsockopt(fSock, SOL_SOCKET, SO_LINGER, (const char FAR*)&sLinger, sizeof(linger))) { ...