comparison mercurial/sshpeer.py @ 36536:3cd245945ef3

wireprotoserver: move SSHV1 and SSHV2 constants to wireprototypes To avoid a cycle between modules in an upcoming commit. Differential Revision: https://phab.mercurial-scm.org/D2482
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 27 Feb 2018 14:26:00 -0800
parents 1a36ef7df70a
children 1151c731686e
comparison
equal deleted inserted replaced
36535:1c16324fdf05 36536:3cd245945ef3
15 error, 15 error,
16 pycompat, 16 pycompat,
17 util, 17 util,
18 wireproto, 18 wireproto,
19 wireprotoserver, 19 wireprotoserver,
20 wireprototypes,
20 ) 21 )
21 22
22 def _serverquote(s): 23 def _serverquote(s):
23 """quote a string for the remote shell ... which we assume is sh""" 24 """quote a string for the remote shell ... which we assume is sh"""
24 if not s: 25 if not s:
255 stdin.flush() 256 stdin.flush()
256 except IOError: 257 except IOError:
257 badresponse() 258 badresponse()
258 259
259 # Assume version 1 of wire protocol by default. 260 # Assume version 1 of wire protocol by default.
260 protoname = wireprotoserver.SSHV1 261 protoname = wireprototypes.SSHV1
261 reupgraded = re.compile(b'^upgraded %s (.*)$' % re.escape(token)) 262 reupgraded = re.compile(b'^upgraded %s (.*)$' % re.escape(token))
262 263
263 lines = ['', 'dummy'] 264 lines = ['', 'dummy']
264 max_noise = 500 265 max_noise = 500
265 while lines[-1] and max_noise: 266 while lines[-1] and max_noise:
294 295
295 caps = set() 296 caps = set()
296 297
297 # For version 1, we should see a ``capabilities`` line in response to the 298 # For version 1, we should see a ``capabilities`` line in response to the
298 # ``hello`` command. 299 # ``hello`` command.
299 if protoname == wireprotoserver.SSHV1: 300 if protoname == wireprototypes.SSHV1:
300 for l in reversed(lines): 301 for l in reversed(lines):
301 # Look for response to ``hello`` command. Scan from the back so 302 # Look for response to ``hello`` command. Scan from the back so
302 # we don't misinterpret banner output as the command reply. 303 # we don't misinterpret banner output as the command reply.
303 if l.startswith('capabilities:'): 304 if l.startswith('capabilities:'):
304 caps.update(l[:-1].split(':')[1].split()) 305 caps.update(l[:-1].split(':')[1].split())
553 protoname, caps = _performhandshake(ui, stdin, stdout, stderr) 554 protoname, caps = _performhandshake(ui, stdin, stdout, stderr)
554 except Exception: 555 except Exception:
555 _cleanuppipes(ui, stdout, stdin, stderr) 556 _cleanuppipes(ui, stdout, stdin, stderr)
556 raise 557 raise
557 558
558 if protoname == wireprotoserver.SSHV1: 559 if protoname == wireprototypes.SSHV1:
559 return sshv1peer(ui, path, proc, stdin, stdout, stderr, caps, 560 return sshv1peer(ui, path, proc, stdin, stdout, stderr, caps,
560 autoreadstderr=autoreadstderr) 561 autoreadstderr=autoreadstderr)
561 elif protoname == wireprotoserver.SSHV2: 562 elif protoname == wireprototypes.SSHV2:
562 return sshv2peer(ui, path, proc, stdin, stdout, stderr, caps, 563 return sshv2peer(ui, path, proc, stdin, stdout, stderr, caps,
563 autoreadstderr=autoreadstderr) 564 autoreadstderr=autoreadstderr)
564 else: 565 else:
565 _cleanuppipes(ui, stdout, stdin, stderr) 566 _cleanuppipes(ui, stdout, stdin, stderr)
566 raise error.RepoError(_('unknown version of SSH protocol: %s') % 567 raise error.RepoError(_('unknown version of SSH protocol: %s') %