From ee3c1556ed858861387cea0af34b447e7f1d5f9c Mon Sep 17 00:00:00 2001 From: ianb Date: Mon, 17 Dec 2007 17:12:02 +0000 Subject: Use threadsafe connection class, to avoid some https errors (#211) --- paste/httpserver.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'paste/httpserver.py') 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() -- cgit v1.2.1