summaryrefslogtreecommitdiff
path: root/eventlet/green/ssl.py
diff options
context:
space:
mode:
Diffstat (limited to 'eventlet/green/ssl.py')
-rw-r--r--eventlet/green/ssl.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/eventlet/green/ssl.py b/eventlet/green/ssl.py
index 62fec77..00e6eeb 100644
--- a/eventlet/green/ssl.py
+++ b/eventlet/green/ssl.py
@@ -7,7 +7,7 @@ import sys
import errno
time = __import__('time')
-from eventlet.support import get_errno
+from eventlet.support import EAGAIN_ALIASES, get_errno
from eventlet.hubs import trampoline
from eventlet.greenio import set_nonblocking, GreenSocket, SOCKET_CLOSED, CONNECT_ERR, CONNECT_SUCCESS
orig_socket = __import__('socket')
@@ -21,6 +21,7 @@ else:
__patched__ = ['SSLSocket', 'wrap_socket', 'sslwrap_simple']
+
class GreenSSLSocket(__ssl.SSLSocket):
""" This is a green version of the SSLSocket class from the ssl module added
in 2.6. For documentation on it, please see the Python standard
@@ -140,7 +141,7 @@ class GreenSSLSocket(__ssl.SSLSocket):
except orig_socket.error as e:
if self.act_non_blocking:
raise
- if get_errno(e) == errno.EWOULDBLOCK:
+ if get_errno(e) in EAGAIN_ALIASES:
trampoline(self, write=True,
timeout=self.gettimeout(), timeout_exc=timeout_exc('timed out'))
if get_errno(e) in SOCKET_CLOSED:
@@ -163,7 +164,7 @@ class GreenSSLSocket(__ssl.SSLSocket):
except orig_socket.error as e:
if self.act_non_blocking:
raise
- if get_errno(e) == errno.EWOULDBLOCK:
+ if get_errno(e) in EAGAIN_ALIASES:
trampoline(self, read=True,
timeout=self.gettimeout(), timeout_exc=timeout_exc('timed out'))
if get_errno(e) in SOCKET_CLOSED:
@@ -263,7 +264,7 @@ class GreenSSLSocket(__ssl.SSLSocket):
set_nonblocking(newsock)
break
except orig_socket.error as e:
- if get_errno(e) != errno.EWOULDBLOCK:
+ if get_errno(e) not in EAGAIN_ALIASES:
raise
trampoline(self, read=True, timeout=self.gettimeout(),
timeout_exc=timeout_exc('timed out'))
@@ -282,8 +283,10 @@ class GreenSSLSocket(__ssl.SSLSocket):
def dup(self):
raise NotImplementedError("Can't dup an ssl object")
+
SSLSocket = GreenSSLSocket
+
def wrap_socket(sock, *a, **kw):
return GreenSSLSocket(sock, *a, **kw)