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