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 <sop@google.com>
diff --git a/git_config.py b/git_config.py
index 971d146..4829e2d 100644
--- a/git_config.py
+++ b/git_config.py
@@ -284,6 +284,11 @@
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]