summaryrefslogtreecommitdiff
path: root/paste/httpserver.py
diff options
context:
space:
mode:
Diffstat (limited to 'paste/httpserver.py')
-rwxr-xr-xpaste/httpserver.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/paste/httpserver.py b/paste/httpserver.py
index 71c3193..32ca923 100755
--- a/paste/httpserver.py
+++ b/paste/httpserver.py
@@ -314,7 +314,7 @@ class WSGIHandlerMixin:
# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442473
#
try:
- from OpenSSL import SSL
+ from OpenSSL import SSL, tsafe
SocketErrors = (socket.error, SSL.ZeroReturnError, SSL.SysCallError)
except ImportError:
# Do not require pyOpenSSL to be installed, but disable SSL
@@ -360,7 +360,14 @@ else:
self.socket_type)
self.ssl_context = ssl_context
if ssl_context:
- self.socket = SSL.Connection(ssl_context, self.socket)
+ class TSafeConnection(tsafe.Connection):
+ def settimeout(self, *args):
+ self._lock.acquire()
+ try:
+ return self._ssl_conn.settimeout(*args)
+ finally:
+ self._lock.release()
+ self.socket = TSafeConnection(ssl_context, self.socket)
self.server_bind()
self.server_activate()