diff --git a/appengine_mapper.py b/appengine_mapper.py new file mode 100644 index 000000000..ddb8e6a13 --- /dev/null +++ b/appengine_mapper.py @@ -0,0 +1,23 @@ +# Copyright (c) 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Ensures that all depot_tools talks directly to appengine to avoid SNI.""" + +import urlparse + + +mapping = { + 'codereview.chromium.org': 'chromiumcodereview.appspot.com', + 'crashpad.chromium.org': 'crashpad-home.appspot.com', + 'bugs.chromium.org': 'monorail-prod.appspot.com', + 'bugs-staging.chromium.org': 'monorail-staging.appspot.com', +} + + +def MapUrl(url): + parts = list(urlparse.urlsplit(url)) + new_netloc = mapping.get(parts[1]) + if new_netloc: + parts[1] = new_netloc + return urlparse.urlunsplit(parts) diff --git a/third_party/upload.py b/third_party/upload.py index 0104166c0..7ff42cc96 100755 --- a/third_party/upload.py +++ b/third_party/upload.py @@ -55,6 +55,8 @@ import urlparse from multiprocessing.pool import ThreadPool +import appengine_mapper + # The configparser module was renamed in Python 3. try: import configparser @@ -443,6 +445,7 @@ class AbstractRpcServer(object): tries += 1 args = dict(kwargs) url = "%s%s%s" % (self.host, self.request_path_prefix, request_path) + url = appengine_mapper.MapUrl(url) if args: url += "?" + urllib.urlencode(args) req = self._CreateRequest(url=url, data=payload)