From 722acefdc45a9d335793a79179c56c67f1dfed24 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Wed, 25 Mar 2009 13:58:14 -0700 Subject: [PATCH] Produce a useful error if /ssh_info was HTML and not plain text If /ssh_info is protected by an HTML based login page, we may get back a "200 OK" response from the server with some HTML document asking us to authenticate. This can't be parsed into a host name and port number, so we shouldn't even try. Valid host names and decimal port numbers cannot contain '<', but an unexpected HTML login page would. So we test for '<' to give us a fair indicator that the content isn't what we think it is, and bail out. Signed-off-by: Shawn O. Pearce --- git_config.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/git_config.py b/git_config.py index 971d1467..4829e2d3 100644 --- a/git_config.py +++ b/git_config.py @@ -284,6 +284,11 @@ class Remote(object): info = urlopen(u).read() if info == 'NOT_AVAILABLE': raise UploadError('Upload over ssh unavailable') + if '<' in info: + # Assume the server gave us some sort of HTML + # response back, like maybe a login page. + # + raise UploadError('Cannot read %s:\n%s' % (u, info)) self._review_protocol = 'ssh' self._review_host = info.split(" ")[0]