diff options
author | ianb <devnull@localhost> | 2007-12-17 17:12:02 +0000 |
---|---|---|
committer | ianb <devnull@localhost> | 2007-12-17 17:12:02 +0000 |
commit | ee3c1556ed858861387cea0af34b447e7f1d5f9c (patch) | |
tree | 182cd8ac89c33f2d1f8014317e494e9e31375207 /paste/httpserver.py | |
parent | ac5e7a05bb505ef415a2b1878f3fd09d791e5169 (diff) | |
download | paste-ee3c1556ed858861387cea0af34b447e7f1d5f9c.tar.gz |
Use threadsafe connection class, to avoid some https errors (#211)
Diffstat (limited to 'paste/httpserver.py')
-rwxr-xr-x | paste/httpserver.py | 11 |
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() |