net: remove CloseSocket()

Do the closing in `Sock::Reset()` and remove the standalone
`CloseSocket()`.

This reduces the exposure of low-level sockets (i.e. integer file
descriptors) outside of the `Sock` class.
This commit is contained in:
Vasil Dimov
2021-04-29 17:35:43 +02:00
parent 175fb2670a
commit e8ff3f0c52
3 changed files with 15 additions and 21 deletions

View File

@@ -51,7 +51,20 @@ Sock& Sock::operator=(Sock&& other)
SOCKET Sock::Get() const { return m_socket; }
void Sock::Reset() { CloseSocket(m_socket); }
void Sock::Reset() {
if (m_socket == INVALID_SOCKET) {
return;
}
#ifdef WIN32
int ret = closesocket(m_socket);
#else
int ret = close(m_socket);
#endif
if (ret) {
LogPrintf("Error closing socket %d: %s\n", m_socket, NetworkErrorString(WSAGetLastError()));
}
m_socket = INVALID_SOCKET;
}
ssize_t Sock::Send(const void* data, size_t len, int flags) const
{
@@ -382,19 +395,3 @@ std::string NetworkErrorString(int err)
return SysErrorString(err);
}
#endif
bool CloseSocket(SOCKET& hSocket)
{
if (hSocket == INVALID_SOCKET)
return false;
#ifdef WIN32
int ret = closesocket(hSocket);
#else
int ret = close(hSocket);
#endif
if (ret) {
LogPrintf("Socket close failed: %d. Error: %s\n", hSocket, NetworkErrorString(WSAGetLastError()));
}
hSocket = INVALID_SOCKET;
return ret != SOCKET_ERROR;
}