mirror of
https://gerrit.googlesource.com/git-repo
synced 2025-01-02 16:14:25 +00:00
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>
This commit is contained in:
parent
13cc3844d7
commit
722acefdc4
@ -284,6 +284,11 @@ class Remote(object):
|
|||||||
info = urlopen(u).read()
|
info = urlopen(u).read()
|
||||||
if info == 'NOT_AVAILABLE':
|
if info == 'NOT_AVAILABLE':
|
||||||
raise UploadError('Upload over ssh unavailable')
|
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_protocol = 'ssh'
|
||||||
self._review_host = info.split(" ")[0]
|
self._review_host = info.split(" ")[0]
|
||||||
|
Loading…
Reference in New Issue
Block a user