summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eventlet/greenio/base.py2
-rw-r--r--tests/socket_test.py8
2 files changed, 10 insertions, 0 deletions
diff --git a/eventlet/greenio/base.py b/eventlet/greenio/base.py
index ac59339..2eed869 100644
--- a/eventlet/greenio/base.py
+++ b/eventlet/greenio/base.py
@@ -279,6 +279,7 @@ class GreenSocket(object):
return get_errno(ex)
except IOClosed:
return errno.EBADFD
+ return 0
else:
end = time.time() + self.gettimeout()
timeout_exc = socket.timeout(errno.EAGAIN)
@@ -295,6 +296,7 @@ class GreenSocket(object):
return get_errno(ex)
except IOClosed:
return errno.EBADFD
+ return 0
def dup(self, *args, **kw):
sock = self.fd.dup(*args, **kw)
diff --git a/tests/socket_test.py b/tests/socket_test.py
index 740c2c3..181f9be 100644
--- a/tests/socket_test.py
+++ b/tests/socket_test.py
@@ -99,3 +99,11 @@ def test_error_is_timeout():
tests.check_is_timeout(e)
else:
assert False, 'No timeout, socket.error was not raised'
+
+
+def test_connect_ex_success():
+ # https://github.com/eventlet/eventlet/issues/696
+ server = eventlet.listen(("127.0.0.1", 0))
+ client = socket.socket()
+ result = client.connect_ex(server.getsockname())
+ assert result == 0