From 8ce1f1ff83bf2521fc0f98a45aeb5904c69a1286 Mon Sep 17 00:00:00 2001 From: Senthil Kumaran Date: Thu, 18 Nov 2010 15:00:53 +0000 Subject: Fix Issue 9991: xmlrpc client ssl check faulty --- Lib/test/test_xmlrpc.py | 25 +++++++++++++++++++++++++ Lib/xmlrpc/client.py | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py index e082a2b..62626b6 100644 --- a/Lib/test/test_xmlrpc.py +++ b/Lib/test/test_xmlrpc.py @@ -149,6 +149,31 @@ class XMLRPCTestCase(unittest.TestCase): ('host.tld', [('Authorization', 'Basic dXNlcg==')], {})) + def test_ssl_presence(self): + #Check for ssl support + have_ssl = False + if hasattr(socket, 'ssl'): + have_ssl = True + else: + try: + import ssl + except: + pass + else: + have_ssl = True + try: + xmlrpc.client.ServerProxy('https://localhost:9999').bad_function() + except: + exc = sys.exc_info() + if exc[0] == socket.error: + self.assertTrue(have_ssl, + "No SSL support, but xmlrpclib reports supported.") + elif exc[0] == NotImplementedError and str(exc[1]) == \ + "your version of http.client doesn't support HTTPS": + self.assertFalse(have_ssl, + "SSL supported, but xmlrpclib reports not.") + else: + self.fail("Unable to determine status of SSL check.") class HelperTestCase(unittest.TestCase): diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py index d9c43c2..b855965 100644 --- a/Lib/xmlrpc/client.py +++ b/Lib/xmlrpc/client.py @@ -1330,7 +1330,7 @@ class SafeTransport(Transport): if self._connection and host == self._connection[0]: return self._connection[1] - if not hasattr(socket, "ssl"): + if not hasattr(http.client, "ssl"): raise NotImplementedError( "your version of http.client doesn't support HTTPS") # create a HTTPS connection object from a host descriptor -- cgit v0.12