mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-31 10:01:53 +08:00
tesmart rewrite
This commit is contained in:
@@ -295,7 +295,7 @@ class UserGpio:
|
||||
async def cleanup(self) -> None:
|
||||
for driver in self.__drivers.values():
|
||||
try:
|
||||
driver.cleanup()
|
||||
await driver.cleanup()
|
||||
except Exception:
|
||||
get_logger().exception("Can't cleanup driver %s", driver)
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ import struct
|
||||
from typing import Tuple
|
||||
from typing import Any
|
||||
|
||||
from .... import aiotools
|
||||
|
||||
from .errors import RfbConnectionError
|
||||
|
||||
|
||||
@@ -35,18 +37,6 @@ def rfb_format_remote(writer: asyncio.StreamWriter) -> str:
|
||||
return "[%s]:%d" % (writer.transport.get_extra_info("peername")[:2])
|
||||
|
||||
|
||||
async def rfb_close_writer(writer: asyncio.StreamWriter) -> bool:
|
||||
closing = writer.is_closing()
|
||||
if not closing:
|
||||
writer.transport.abort() # type: ignore
|
||||
writer.close()
|
||||
try:
|
||||
await writer.wait_closed()
|
||||
except Exception:
|
||||
pass
|
||||
return (not closing)
|
||||
|
||||
|
||||
class RfbClientStream:
|
||||
def __init__(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None:
|
||||
self.__reader = reader
|
||||
@@ -145,4 +135,4 @@ class RfbClientStream:
|
||||
self.__writer = ssl_writer
|
||||
|
||||
async def _close(self) -> None:
|
||||
await rfb_close_writer(self.__writer)
|
||||
await aiotools.close_writer(self.__writer)
|
||||
|
||||
@@ -55,7 +55,6 @@ from ... import aiotools
|
||||
|
||||
from .rfb import RfbClient
|
||||
from .rfb.stream import rfb_format_remote
|
||||
from .rfb.stream import rfb_close_writer
|
||||
from .rfb.errors import RfbError
|
||||
|
||||
from .vncauth import VncAuthKvmdCredentials
|
||||
@@ -487,7 +486,7 @@ class VncServer: # pylint: disable=too-many-instance-attributes
|
||||
except Exception:
|
||||
logger.exception("[entry] %s: Unhandled exception in client task", remote)
|
||||
finally:
|
||||
if (await rfb_close_writer(writer)):
|
||||
if (await aiotools.close_writer(writer)):
|
||||
logger.info("[entry] %s: Connection is closed in an emergency", remote)
|
||||
|
||||
self.__handle_client = handle_client
|
||||
|
||||
Reference in New Issue
Block a user