diff --git a/libcloud/httplib_ssl.py b/libcloud/httplib_ssl.py index f47e4917a9..6aff1b39df 100644 --- a/libcloud/httplib_ssl.py +++ b/libcloud/httplib_ssl.py @@ -163,9 +163,10 @@ class LibcloudConnection(LibcloudBaseConnection): response = None def __init__(self, host, port, **kwargs): - self.host = '{0}://{1}'.format( + self.host = '{0}://{1}{2}'.format( 'https' if port == 443 else 'http', - host + host, + ":{0}".format(port) if port not in (80, 443) else "" ) # Support for HTTP proxy proxy_url_env = os.environ.get(HTTP_PROXY_ENV_VARIABLE_NAME, None) diff --git a/libcloud/test/test_connection.py b/libcloud/test/test_connection.py index b4743c3e77..c6c770d026 100644 --- a/libcloud/test/test_connection.py +++ b/libcloud/test/test_connection.py @@ -99,6 +99,16 @@ def test_constructor(self): self.assertEqual(conn.proxy_host, '127.0.0.5') self.assertEqual(conn.proxy_port, 3128) + def test_connection_to_unusual_port(self): + conn = LibcloudConnection(host='localhost', port=8080) + self.assertEqual(conn.proxy_scheme, None) + self.assertEqual(conn.proxy_host, None) + self.assertEqual(conn.proxy_port, None) + self.assertEqual(conn.host, 'http://localhost:8080') + + conn = LibcloudConnection(host='localhost', port=80) + self.assertEqual(conn.host, 'http://localhost') + class ConnectionClassTestCase(unittest.TestCase): def setUp(self):