Add a wrapper function for ssl() on Windows. Inspired by SF patch

# 409287, ssl fix when using _socketobject, by Robin Dunn.

I took the opportunity to improve the way it deals with reload(socket)
for the socket function as well.
This commit is contained in:
Guido van Rossum 2001-03-22 22:12:17 +00:00
parent bfb9184ba8
commit 3f69f21644
1 changed files with 11 additions and 6 deletions

View File

@ -45,21 +45,26 @@ import os, sys
__all__ = ["getfqdn"]
import _socket
__all__.extend(os._get_exports_list(_socket))
del _socket
if (sys.platform.lower().startswith("win")
or (hasattr(os, 'uname') and os.uname()[0] == "BeOS")
or (sys.platform=="RISCOS")):
# be sure this happens only once, even in the face of reload():
try:
_realsocketcall
except NameError:
_realsocketcall = socket
_realsocketcall = _socket.socket
def socket(family, type, proto=0):
return _socketobject(_realsocketcall(family, type, proto))
try:
_realsslcall = _socket.ssl
except AttributeError:
pass # No ssl
else:
def ssl(sock, keyfile=None, certfile=None):
if hasattr(sock, "_sock"):
sock = sock._sock
return _realsslcall(sock, keyfile, certfile)
# WSA error codes
if sys.platform.lower().startswith("win"):