1 From 474afa7c09ec61b7112e22cebbfdb31244924de1 Mon Sep 17 00:00:00 2001
2 From: Roman Podoliaka <rpodolyaka@mirantis.com>
3 Date: Tue, 21 Oct 2014 15:53:02 +0300
4 Subject: [PATCH] Don't treat ENOTCONN as if it would block
6 Upstream eventlet handles ENOTCONN in a special way, which can make
7 Python processes stuck trying to send a new log entry to rsyslog.
9 Change-Id: Ia9cee7f785135e3cfef24e952b0240a37d7f6fba
12 eventlet/greenio.py | 6 ++----
13 1 file changed, 2 insertions(+), 4 deletions(-)
15 diff --git a/eventlet/greenio.py b/eventlet/greenio.py
16 index 38e8168..76ebbab 100644
17 --- a/eventlet/greenio.py
18 +++ b/eventlet/greenio.py
19 @@ -62,10 +62,8 @@ if sys.platform[:3] == "win":
20 SOCKET_BLOCKING = set((errno.EAGAIN, errno.EWOULDBLOCK,))
21 SOCKET_CLOSED = set((errno.ECONNRESET, errno.ENOTCONN, errno.ESHUTDOWN))
23 - # oddly, on linux/darwin, an unconnected socket is expected to block,
24 - # so we treat ENOTCONN the same as EWOULDBLOCK
25 - SOCKET_BLOCKING = set((errno.EAGAIN, errno.EWOULDBLOCK, errno.ENOTCONN))
26 - SOCKET_CLOSED = set((errno.ECONNRESET, errno.ESHUTDOWN, errno.EPIPE))
27 + SOCKET_BLOCKING = set((errno.EAGAIN, errno.EWOULDBLOCK))
28 + SOCKET_CLOSED = set((errno.ECONNRESET, errno.ESHUTDOWN, errno.EPIPE, errno.ENOTCONN))
31 def set_nonblocking(fd):