From 0e3ee4da239b6dfb97ba322879c3791fa38e4bcc Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 24 Nov 2008 14:33:00 +0600 Subject: [PATCH] fix for trampoline: raise 32, 'Broken pipe', if error is not provided (that's how original eventlet behaves) --- eventlet/api.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/eventlet/api.py b/eventlet/api.py index af65cff..8979359 100644 --- a/eventlet/api.py +++ b/eventlet/api.py @@ -139,7 +139,10 @@ def trampoline(fd, read=None, write=None, timeout=None, timeout_exc=TimeoutError assert hub.greenlet is not current, 'do not call blocking functions from the mainloop' fileno = getattr(fd, 'fileno', lambda: fd)() def _do_close(_d, error=None): - current.throw(getattr(error, 'value', None)) # convert to socket.error + if error is None: + current.throw(socket.error(32, 'Broken pipe')) + else: + current.throw(getattr(error, 'value', error)) # convert to socket.error def _do_timeout(): current.throw(timeout_exc()) def cb(d):