mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 09:10:30 +08:00
abort vnc connection
This commit is contained in:
parent
98a176f740
commit
10f3b5f6a3
@ -91,6 +91,9 @@ class RfbClient(RfbClientStream): # pylint: disable=too-many-instance-attribute
|
|||||||
finally:
|
finally:
|
||||||
for task in tasks:
|
for task in tasks:
|
||||||
task.cancel()
|
task.cancel()
|
||||||
|
await asyncio.gather(*tasks, return_exceptions=True)
|
||||||
|
await self._close()
|
||||||
|
get_logger(0).info("Connection closed: %s", self._remote)
|
||||||
|
|
||||||
async def __wrapper(self, name: str, coro: Coroutine) -> None:
|
async def __wrapper(self, name: str, coro: Coroutine) -> None:
|
||||||
logger = get_logger(0)
|
logger = get_logger(0)
|
||||||
@ -98,23 +101,20 @@ class RfbClient(RfbClientStream): # pylint: disable=too-many-instance-attribute
|
|||||||
await coro
|
await coro
|
||||||
raise RuntimeError("Subtask just finished without any exception")
|
raise RuntimeError("Subtask just finished without any exception")
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
logger.info("[%s] Client %s: Cancelling ...", name, self._remote)
|
logger.info("[%s] Client %s: Cancelling subtask ...", name, self._remote)
|
||||||
raise
|
raise
|
||||||
except RfbConnectionError as err:
|
except RfbConnectionError as err:
|
||||||
logger.info("[%s] Client %s: Gone (%s): Disconnected", name, self._remote, str(err))
|
logger.info("[%s] Client %s: Gone: %s", name, self._remote, str(err))
|
||||||
except (RfbError, ssl.SSLError) as err:
|
except (RfbError, ssl.SSLError) as err:
|
||||||
logger.error("[%s] Client %s: %s: Disconnected", name, self._remote, str(err))
|
logger.error("[%s] Client %s: Error: %s", name, self._remote, str(err))
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("[%s] Unhandled exception with client %s: Disconnected", name, self._remote)
|
logger.exception("[%s] Unhandled exception with client %s", name, self._remote)
|
||||||
|
|
||||||
async def __main_task_loop(self) -> None:
|
async def __main_task_loop(self) -> None:
|
||||||
try:
|
await self.__handshake_version()
|
||||||
await self.__handshake_version()
|
await self.__handshake_security()
|
||||||
await self.__handshake_security()
|
await self.__handshake_init()
|
||||||
await self.__handshake_init()
|
await self.__main_loop()
|
||||||
await self.__main_loop()
|
|
||||||
finally:
|
|
||||||
self._close()
|
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
|
|||||||
@ -128,8 +128,10 @@ class RfbClientStream:
|
|||||||
self.__reader = ssl_reader
|
self.__reader = ssl_reader
|
||||||
self.__writer = ssl_writer
|
self.__writer = ssl_writer
|
||||||
|
|
||||||
def _close(self) -> None:
|
async def _close(self) -> None:
|
||||||
|
self.__writer.transport.abort()
|
||||||
try:
|
try:
|
||||||
self.__writer.close()
|
self.__writer.close()
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
await self.__writer.wait_closed()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user