summaryrefslogtreecommitdiff
path: root/OpenSSL/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSSL/__init__.py')
-rw-r--r--OpenSSL/__init__.py29
1 files changed, 25 insertions, 4 deletions
diff --git a/OpenSSL/__init__.py b/OpenSSL/__init__.py
index 51dfdc9..004cd05 100644
--- a/OpenSSL/__init__.py
+++ b/OpenSSL/__init__.py
@@ -10,18 +10,39 @@ pyOpenSSL - A simple wrapper around the OpenSSL library
"""
import sys
+
try:
orig = sys.getdlopenflags()
except AttributeError:
- pass
+ from OpenSSL import crypto
else:
- sys.setdlopenflags(2 | 256)
+ try:
+ import DLFCN
+ except ImportError:
+ try:
+ import dl
+ except ImportError:
+ try:
+ import ctypes
+ except ImportError:
+ flags = 2 | 256
+ else:
+ flags = 2 | ctypes.RTLD_GLOBAL
+ del ctypes
+ else:
+ flags = dl.RTLD_NOW | dl.RTLD_GLOBAL
+ del dl
+ else:
+ flags = DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL
+ del DLFCN
+
+ sys.setdlopenflags(flags)
from OpenSSL import crypto
sys.setdlopenflags(orig)
- del orig
+ del orig, flags
del sys
-from OpenSSL import rand, crypto, SSL
+from OpenSSL import rand, SSL
from OpenSSL.version import __version__
__all__ = [