From ca214ffe784a7595566e74620a78acd17c102982 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2021 15:45:13 +0530 Subject: [PATCH] transfer receive: ensure open files are closed --- kittens/transfer/receive.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kittens/transfer/receive.py b/kittens/transfer/receive.py index 078251165..623e0006d 100644 --- a/kittens/transfer/receive.py +++ b/kittens/transfer/receive.py @@ -72,6 +72,11 @@ class File: def __repr__(self) -> str: return f'File(rpath={self.remote_path!r}, lpath={self.expanded_local_path!r})' + def close(self) -> None: + if self.actual_file is not None: + self.actual_file.close() + self.actual_file = None + def write_data(self, data: bytes, is_last: bool) -> int: self.received_bytes += len(data) data = self.decompressor(data, is_last) @@ -639,6 +644,8 @@ def receive_main(cli_opts: TransferCLIOptions, args: List[str]) -> None: loop = Loop() handler = Receive(cli_opts, spec, dest) loop.loop(handler) + for f in handler.manager.files: + f.close() tsf = dsz = ssz = 0 for f in handler.manager.files: if f.expect_diff: