diff --git a/pymobiledevice3/lockdown.py b/pymobiledevice3/lockdown.py index 52897fecb..1761fe54d 100755 --- a/pymobiledevice3/lockdown.py +++ b/pymobiledevice3/lockdown.py @@ -3,6 +3,7 @@ import logging import os import plistlib +import sys import tempfile import time from abc import ABC, abstractmethod @@ -56,15 +57,21 @@ def _reconnect_on_remote_close(f): transmitted). When this happens, we'll attempt to reconnect. """ + def _reconnect(self: 'LockdownClient'): + self._reestablish_connection() + self.validate_pairing() + @wraps(f) def _inner_reconnect_on_remote_close(*args, **kwargs): try: return f(*args, **kwargs) except (BrokenPipeError, ConnectionTerminatedError): - self: LockdownClient = args[0] - - self._reestablish_connection() - self.validate_pairing() + _reconnect(args[0]) + return f(*args, **kwargs) + except ConnectionAbortedError: + if sys.platform != 'win32': + raise + _reconnect(args[0]) return f(*args, **kwargs) return _inner_reconnect_on_remote_close