diff --git a/hal/socket/linux/socket_linux.c b/hal/socket/linux/socket_linux.c index 020c850d..dc9bbaeb 100644 --- a/hal/socket/linux/socket_linux.c +++ b/hal/socket/linux/socket_linux.c @@ -431,6 +431,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 d42a3674..232ba17f 100644 --- a/hal/socket/win32/socket_win32.c +++ b/hal/socket/win32/socket_win32.c @@ -386,6 +386,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; }