From 18e6778bcdffc68c5b954cb41a6031698e67082e Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Sun, 17 Feb 2002 04:25:24 +0000 Subject: [PATCH] Repair so that importing socket doesn't blow up on platforms that lack SSL support. test_socket.py passes again on Windows. Added an XXX about adding _ssl exports to the __all__ list (it doesn't appear to be doing anything about that now, but since I don't have SSL on this box I can't really tell). --- Lib/socket.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Lib/socket.py b/Lib/socket.py index 45131ce840c..153f602b26f 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -38,37 +38,42 @@ Many other constants may be defined; these may be used in calls to the setsockopt() and getsockopt() methods. """ +import _socket from _socket import * + +SSL_EXISTS = 1 try: + import _ssl from _ssl import * except ImportError: - pass + SSL_EXISTS = 0 import os, sys __all__ = ["getfqdn"] -import _socket __all__.extend(os._get_exports_list(_socket)) +# XXX shouldn't there be something similar to the above for _ssl exports? if (sys.platform.lower().startswith("win") or (hasattr(os, 'uname') and os.uname()[0] == "BeOS") - or (sys.platform=="riscos")): + or sys.platform=="riscos"): _realsocketcall = _socket.socket def socket(family, type, proto=0): return _socketobject(_realsocketcall(family, type, proto)) - try: + if SSL_EXISTS: _realsslcall = _ssl.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) +del _socket +if SSL_EXISTS: + del _ssl +del SSL_EXISTS # WSA error codes if sys.platform.lower().startswith("win"):