From 890e44ef60a9a90ee6aab60e3ece2b6b3159e0bb Mon Sep 17 00:00:00 2001 From: Marian Beermann Date: Sun, 3 Apr 2016 21:44:29 +0200 Subject: [PATCH] RemoteRepository: clean up pipe if remote open() fails --- borg/remote.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/borg/remote.py b/borg/remote.py index af74c69d8..30a343922 100644 --- a/borg/remote.py +++ b/borg/remote.py @@ -81,6 +81,7 @@ class RepositoryServer: # pragma: no cover unpacker.feed(data) for unpacked in unpacker: if not (isinstance(unpacked, tuple) and len(unpacked) == 4): + self.repository.close() raise Exception("Unexpected RPC data format.") type, msgid, method, args = unpacked method = method.decode('ascii') @@ -165,7 +166,11 @@ class RemoteRepository: raise ConnectionClosedWithHint('Is borg working on the server?') from None if version != RPC_PROTOCOL_VERSION: raise Exception('Server insisted on using unsupported protocol version %d' % version) - self.id = self.call('open', location.path, create, lock_wait, lock) + try: + self.id = self.call('open', self.location.path, create, lock_wait, lock) + except Exception: + self.close() + raise def __del__(self): self.close()