From 80b9e289cef4fc0939141ccf15751017a58a1637 Mon Sep 17 00:00:00 2001 From: Robey Pointer Date: Sun, 23 Sep 2007 23:25:34 -0700 Subject: [PATCH] [project @ robey@lag.net-20070924062534-5yemkpyjy2sssvjn] bug 137219: handle EINTR in a read or write, if python doesn't. --- paramiko/packet.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/paramiko/packet.py b/paramiko/packet.py index 2cdf5d8..4bde2f7 100644 --- a/paramiko/packet.py +++ b/paramiko/packet.py @@ -218,6 +218,9 @@ class Packetizer (object): # we need to work around it. if (type(e.args) is tuple) and (len(e.args) > 0) and (e.args[0] == errno.EAGAIN): got_timeout = True + elif (type(e.args) is tuple) and (len(e.args) > 0) and (e.args[0] == errno.EINTR): + # syscall interrupted; try again + pass elif self.__closed: raise EOFError() else: @@ -241,6 +244,9 @@ class Packetizer (object): except socket.error, e: if (type(e.args) is tuple) and (len(e.args) > 0) and (e.args[0] == errno.EAGAIN): got_timeout = True + elif (type(e.args) is tuple) and (len(e.args) > 0) and (e.args[0] == errno.EINTR): + # syscall interrupted; try again + pass else: n = -1 except Exception: