From 0aee7220db3354ef32b5d1ac92f2c5942bb8eaf8 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 11 Dec 2000 20:32:20 +0000 Subject: [PATCH] Hoepeful fix for SF bug #123924: Windows - using OpenSSL, problem with socket in httplib.py. The bug reports that on Windows, you must pass sock._sock to the socket.ssl() call. But on Unix, you must pass sock itself. (sock is a wrapper on Windows but not on Unix; the ssl() call wants the real socket object, not the wrapper.) So we see if sock has an _sock attribute and if so, extract it. Unfortunately, the submitter of the bug didn't confirm that this patch works, so I'll just have to believe it (can't test it myself since I don't have OpenSSL on Windows set up, and that's a nontrivial thing I believe). --- Lib/httplib.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Lib/httplib.py b/Lib/httplib.py index 26883593089..2b32a1bb57e 100644 --- a/Lib/httplib.py +++ b/Lib/httplib.py @@ -613,7 +613,10 @@ class HTTPSConnection(HTTPConnection): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((self.host, self.port)) - ssl = socket.ssl(sock, self.key_file, self.cert_file) + realsock = sock + if hasattr(sock, "_sock"): + realsock = sock._sock + ssl = socket.ssl(realsock, self.key_file, self.cert_file) self.sock = FakeSocket(sock, ssl)