diff --git a/kittens/transfer/receive.py b/kittens/transfer/receive.py index 623e0006d..3a00b2ba4 100644 --- a/kittens/transfer/receive.py +++ b/kittens/transfer/receive.py @@ -244,6 +244,10 @@ class Manager: self.transfer_done = False self.use_rsync = use_rsync + @property + def finish_code(self) -> str: + return FileTransmissionCommand(action=Action.finish).serialize() + def start_transfer(self) -> Iterator[str]: yield FileTransmissionCommand(action=Action.receive, bypass=self.bypass, size=len(self.spec)).serialize() for i, x in enumerate(self.spec): @@ -438,6 +442,7 @@ class Receive(Handler): else: self.start_transfer() if self.manager.transfer_done: + self.send_payload(self.manager.finish_code) self.quit_after_write_code = 0 self.refresh_progress() elif self.transmit_started: diff --git a/kitty/file_transmission.py b/kitty/file_transmission.py index 8ca043ead..cef518834 100644 --- a/kitty/file_transmission.py +++ b/kitty/file_transmission.py @@ -815,7 +815,7 @@ class FileTransmission: self.send_transmission_error(asd.id, err) else: self.pump_send_chunks(asd) - elif cmd.action is Action.status: + elif cmd.action in (Action.status, Action.finish): self.drop_send(asd.id) return if not asd.accepted: