]> granicus.if.org Git - python/commitdiff
Merged revisions 86514 via svnmerge from
authorSenthil Kumaran <orsenthil@gmail.com>
Thu, 18 Nov 2010 15:04:41 +0000 (15:04 +0000)
committerSenthil Kumaran <orsenthil@gmail.com>
Thu, 18 Nov 2010 15:04:41 +0000 (15:04 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r86514 | senthil.kumaran | 2010-11-18 23:00:53 +0800 (Thu, 18 Nov 2010) | 3 lines

  Fix Issue 9991: xmlrpc client ssl check faulty
........

Lib/test/test_xmlrpc.py
Lib/xmlrpc/client.py

index 7bcb6ba37f0380cb410fcf470fe7eed18c33b7b7..8f41d7fec1070c954f2978cbc2e714d56094e857 100644 (file)
@@ -143,6 +143,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):
     def test_escape(self):
index 8d35b5a0e260b4d36e253b38e8f4a31d22bc557f..d7dbbcc2e1144b31c41173df227773019dcd3ede 100644 (file)
@@ -1178,7 +1178,7 @@ class SafeTransport(Transport):
 
     def send_request(self, host, handler, request_body, debug):
         import socket
-        if not hasattr(socket, "ssl"):
+        if not hasattr(http.client, "ssl"):
             raise NotImplementedError(
                 "your version of http.client doesn't support HTTPS")