From 1b9adab75a87c5eb94c3c3b653fdc2c123ba0077 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 4 Jul 2019 17:54:54 -0400 Subject: [PATCH] handle binary stream from urllib.request.urlopen Python 3 returns bytes by default with urlopen. Adjust our code to handle that scenario and decode as necessary. Bug: https://crbug.com/gerrit/10418 Change-Id: Icf4cd80e7ef92d71a3eefbc6113f1ba11c32eebc --- git_config.py | 3 ++- repo | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/git_config.py b/git_config.py index ca1282a..cdfeddd 100644 --- a/git_config.py +++ b/git_config.py @@ -657,13 +657,14 @@ class Remote(object): info = urllib.request.urlopen(info_url, context=context).read() else: info = urllib.request.urlopen(info_url).read() - if info == 'NOT_AVAILABLE' or '<' in info: + if info == b'NOT_AVAILABLE' or b'<' in info: # If `info` contains '<', we assume the server gave us some sort # of HTML response back, like maybe a login page. # # Assume HTTP if SSH is not enabled or ssh_info doesn't look right. self._review_url = http_url else: + info = info.decode('utf-8') host, port = info.split() self._review_url = self._SshReviewUrl(userEmail, host, port) except urllib.error.HTTPError as e: diff --git a/repo b/repo index aa357a2..ce42ad0 100755 --- a/repo +++ b/repo @@ -583,7 +583,7 @@ def _DownloadBundle(url, local, quiet): print('Get %s' % url, file=sys.stderr) while True: buf = r.read(8192) - if buf == '': + if not buf: return True dest.write(buf) finally: