# HG changeset patch # User Gregory Szorc # Date 1517773039 28800 # Node ID 805edf16e8e00b514562b826e1df140b58afb31e # Parent 31449baf09363828d211c15b532dd84ad5e64499 sshpeer: extract pipe cleanup logic to own function So it can be used outside of instantiated classes. This is needed to support pipe creation before __init__ is called. Differential Revision: https://phab.mercurial-scm.org/D2029 diff -r 31449baf0936 -r 805edf16e8e0 mercurial/sshpeer.py --- a/mercurial/sshpeer.py Sun Feb 04 19:23:40 2018 -0800 +++ b/mercurial/sshpeer.py Sun Feb 04 11:37:19 2018 -0800 @@ -114,6 +114,23 @@ def flush(self): return self._main.flush() +def _cleanuppipes(ui, pipei, pipeo, pipee): + """Clean up pipes used by an SSH connection.""" + if pipeo: + pipeo.close() + if pipei: + pipei.close() + + if pipee: + # Try to read from the err descriptor until EOF. + try: + for l in pipee: + ui.status(_('remote: '), l) + except (IOError, ValueError): + pass + + pipee.close() + class sshpeer(wireproto.wirepeer): def __init__(self, ui, path, create=False, sshstate=None): self._url = path @@ -221,17 +238,7 @@ raise exception def _cleanup(self): - if self._pipeo is None: - return - self._pipeo.close() - self._pipei.close() - try: - # read the error descriptor until EOF - for l in self._pipee: - self.ui.status(_("remote: "), l) - except (IOError, ValueError): - pass - self._pipee.close() + _cleanuppipes(self.ui, self._pipei, self._pipeo, self._pipee) __del__ = _cleanup