Skip to content

Commit

Permalink
Handle httplib implementations that don't set _tunnel_host
Browse files Browse the repository at this point in the history
urllib3 removed support for Python versions before 2.7 in a previous
pull request, unfortunately, this broke environments that use a
different implementation of httplib than the one in Python's standard
library as well. This includes Google App Engine's urlfetch-based
implementation
(https://github.com/GoogleCloudPlatform/python-compat-runtime/blob/master/appengine-compat/exported_appengine_sdk/google/appengine/dist27/gae_override/httplib.py#L362)

This pull request is nearly identical to urllib3#1504 which was
closed due to its author not responding to comments.

Fixes urllib3#1503
  • Loading branch information
jpevarnek committed Jan 24, 2019
1 parent 791e9b4 commit c42c8c6
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/urllib3/connection.py
Expand Up @@ -171,7 +171,8 @@ def _new_conn(self):

def _prepare_conn(self, conn):
self.sock = conn
if self._tunnel_host:
# Google App Engine's httplib does not define _tunnel_host
if getattr(self, '_tunnel_host', None):
# TODO: Fix tunnel so it doesn't depend on self.sock state.
self._tunnel()
# Mark this connection as not reusable
Expand Down Expand Up @@ -305,7 +306,8 @@ def connect(self):
conn = self._new_conn()
hostname = self.host

if self._tunnel_host:
# Google App Engine's httplib does not define _tunnel_host
if getattr(self, '_tunnel_host', None):
self.sock = conn
# Calls self._set_hostport(), so self.host is
# self._tunnel_host below.
Expand Down

0 comments on commit c42c8c6

Please sign in to comment.