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