diff --git a/hal/socket/linux/socket_linux.c b/hal/socket/linux/socket_linux.c index 7d04e4ff..e8a96d31 100644 --- a/hal/socket/linux/socket_linux.c +++ b/hal/socket/linux/socket_linux.c @@ -427,6 +427,11 @@ Socket_connectAsync(Socket self, const char* address, int port) if (connect(self->fd, (struct sockaddr *) &serverAddress, sizeof(serverAddress)) < 0) { if (errno != EINPROGRESS) { + if (close(self->fd) == -1) { + if (DEBUG_SOCKET) + printf("SOCKET: failed to close socket (errno: %i)\n", errno); + } + self->fd = -1; return false; } diff --git a/hal/socket/win32/socket_win32.c b/hal/socket/win32/socket_win32.c index 2368f32a..4cba2782 100644 --- a/hal/socket/win32/socket_win32.c +++ b/hal/socket/win32/socket_win32.c @@ -382,6 +382,7 @@ Socket_connectAsync(Socket self, const char* address, int port) if (connect(self->fd, (struct sockaddr *) &serverAddress, sizeof(serverAddress)) == SOCKET_ERROR) { if (WSAGetLastError() != WSAEWOULDBLOCK) { + closesocket(self->fd); self->fd = INVALID_SOCKET; return false; }