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()