py3 connection class did not initialize .proxy_info attribute

https://github.com/httplib2/httplib2/pull/97
diff --git a/python3/httplib2/__init__.py b/python3/httplib2/__init__.py
index 04f9c5e..deb7168 100644
--- a/python3/httplib2/__init__.py
+++ b/python3/httplib2/__init__.py
@@ -886,11 +886,9 @@
         http.client.HTTPConnection.__init__(self, host, port=port,
                                             timeout=timeout)
 
-        if proxy_info:
-            if isinstance(proxy_info, ProxyInfo):
-                self.proxy_info = proxy_info
-            else:
-                self.proxy_info = proxy_info('http')
+        self.proxy_info = proxy_info
+        if proxy_info and not isinstance(proxy_info, ProxyInfo):
+            self.proxy_info = proxy_info('http')
 
     def connect(self):
         """Connect to the host and port specified in __init__."""
@@ -967,11 +965,9 @@
         self.disable_ssl_certificate_validation = disable_ssl_certificate_validation
         self.ca_certs = ca_certs if ca_certs else CA_CERTS
 
-        if proxy_info:
-            if isinstance(proxy_info, ProxyInfo):
-                self.proxy_info = proxy_info
-            else:
-                self.proxy_info = proxy_info('https')
+        self.proxy_info = proxy_info
+        if proxy_info and not isinstance(proxy_info, ProxyInfo):
+            self.proxy_info = proxy_info('https')
 
         context = _build_ssl_context(self.disable_ssl_certificate_validation, self.ca_certs, cert_file, key_file)
         super(HTTPSConnectionWithTimeout, self).__init__(host, port=port, key_file=key_file, cert_file=cert_file,
diff --git a/python3/httplib2test.py b/python3/httplib2test.py
index a0dca80..a4afae9 100755
--- a/python3/httplib2test.py
+++ b/python3/httplib2test.py
@@ -1630,5 +1630,11 @@
         pi = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP, 'localhost', 1234, proxy_headers = headers)

         self.assertEqual(pi.proxy_headers, headers)

 

+    # regression: ensure that httplib2.HTTPConnectionWithTimeout initializes when proxy_info is not supplied

+    def test_proxy_init(self):

+        connection = httplib2.HTTPConnectionWithTimeout('www.google.com', 80)

+        connection.request('GET', '/')

+        connection.close()

+

 if __name__ == '__main__':

     unittest.main()

diff --git a/tests/test_other.py b/tests/test_other.py
index 63788c6..61b0d46 100644
--- a/tests/test_other.py
+++ b/tests/test_other.py
@@ -1,4 +1,5 @@
 import httplib2
+import mock
 import os
 import pickle
 import pytest
@@ -165,3 +166,15 @@
         assert False, 'should get the address family right for IPv6'
     except socket.error:
         pass
+
+
+@pytest.mark.parametrize('conn_type', (httplib2.HTTPConnectionWithTimeout, httplib2.HTTPSConnectionWithTimeout))
+def test_connection_proxy_info_attribute_error(conn_type):
+    # HTTPConnectionWithTimeout did not initialize its .proxy_info attribute
+    # https://github.com/httplib2/httplib2/pull/97
+    # Thanks to Joseph Ryan https://github.com/germanjoey
+    conn = conn_type('no-such-hostname.', 80)
+    # TODO: replace mock with dummy local server
+    with tests.assert_raises(socket.gaierror):
+        with mock.patch('socket.socket.connect', side_effect=socket.gaierror):
+            conn.request('GET', '/')