From 370b70e0c4b3e4843db9e3e584684c9766f62d33 Mon Sep 17 00:00:00 2001 From: Stefan Tatschner Date: Mon, 10 Oct 2022 11:22:46 +0200 Subject: [PATCH] fix: Skip properties post when transport is closed If the connection has been terminated, the properties could not be read. --- src/gallia/command.py | 2 +- src/gallia/transports/base.py | 1 + src/gallia/transports/doip.py | 1 + src/gallia/transports/tcp.py | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallia/command.py b/src/gallia/command.py index 451a649e..062ac64e 100644 --- a/src/gallia/command.py +++ b/src/gallia/command.py @@ -643,7 +643,7 @@ async def setup(self, args: Namespace) -> None: ) async def teardown(self, args: Namespace) -> None: - if args.properties is True: + if args.properties is True and not self.ecu.transport.is_closed: path = self.artifacts_dir.joinpath(FileNames.PROPERTIES_POST.value) async with aiofiles.open(path, "w") as file: await file.write(json.dumps(await self.ecu.properties(True), indent=4)) diff --git a/src/gallia/transports/base.py b/src/gallia/transports/base.py index 4b38b3d3..daf024f2 100644 --- a/src/gallia/transports/base.py +++ b/src/gallia/transports/base.py @@ -75,6 +75,7 @@ def __init__(self, target: TargetURI) -> None: self.mutex = asyncio.Lock() self.logger = get_logger(self.SCHEME) self.target = target + self.is_closed = False def __init_subclass__( cls, diff --git a/src/gallia/transports/doip.py b/src/gallia/transports/doip.py index a643c9c9..eee5765b 100644 --- a/src/gallia/transports/doip.py +++ b/src/gallia/transports/doip.py @@ -563,6 +563,7 @@ async def connect( return cls(t, port, config, conn) async def close(self) -> None: + self.is_closed = True await self._conn.close() async def read( diff --git a/src/gallia/transports/tcp.py b/src/gallia/transports/tcp.py index 1f4e56c7..70c85805 100644 --- a/src/gallia/transports/tcp.py +++ b/src/gallia/transports/tcp.py @@ -34,6 +34,7 @@ async def connect( return cls(t, reader, writer) async def close(self) -> None: + self.is_closed = True self.writer.close() await self.writer.wait_closed()