This revision was automatically updated to reflect the committed changes. Closed by commit rHGcaf423782b3a: sshpeer: factor out code for creating peers from pipes (authored by indygreg, committed by ).
REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D2391?vs=6133&id=6243 REVISION DETAIL https://phab.mercurial-scm.org/D2391 AFFECTED FILES mercurial/sshpeer.py CHANGE DETAILS diff --git a/mercurial/sshpeer.py b/mercurial/sshpeer.py --- a/mercurial/sshpeer.py +++ b/mercurial/sshpeer.py @@ -531,6 +531,35 @@ # And handshake is performed before the peer is instantiated. So # we need no custom code. +def makepeer(ui, path, proc, stdin, stdout, stderr): + """Make a peer instance from existing pipes. + + ``path`` and ``proc`` are stored on the eventual peer instance and may + not be used for anything meaningful. + + ``stdin``, ``stdout``, and ``stderr`` are the pipes connected to the + SSH server's stdio handles. + + This function is factored out to allow creating peers that don't + actually spawn a new process. It is useful for starting SSH protocol + servers and clients via non-standard means, which can be useful for + testing. + """ + try: + protoname, caps = _performhandshake(ui, stdin, stdout, stderr) + except Exception: + _cleanuppipes(ui, stdout, stdin, stderr) + raise + + if protoname == wireprotoserver.SSHV1: + return sshv1peer(ui, path, proc, stdin, stdout, stderr, caps) + elif protoname == wireprotoserver.SSHV2: + return sshv2peer(ui, path, proc, stdin, stdout, stderr, caps) + else: + _cleanuppipes(ui, stdout, stdin, stderr) + raise error.RepoError(_('unknown version of SSH protocol: %s') % + protoname) + def instance(ui, path, create): """Create an SSH peer. @@ -565,17 +594,4 @@ proc, stdin, stdout, stderr = _makeconnection(ui, sshcmd, args, remotecmd, remotepath, sshenv) - try: - protoname, caps = _performhandshake(ui, stdin, stdout, stderr) - except Exception: - _cleanuppipes(ui, stdout, stdin, stderr) - raise - - if protoname == wireprotoserver.SSHV1: - return sshv1peer(ui, path, proc, stdin, stdout, stderr, caps) - elif protoname == wireprotoserver.SSHV2: - return sshv2peer(ui, path, proc, stdin, stdout, stderr, caps) - else: - _cleanuppipes(ui, stdout, stdin, stderr) - raise error.RepoError(_('unknown version of SSH protocol: %s') % - protoname) + return makepeer(ui, path, proc, stdin, stdout, stderr) To: indygreg, #hg-reviewers, yuja Cc: dhduvall, mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel