summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/PipeReader.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-12-16 10:58:35 -0800
committerZac Medico <zmedico@gentoo.org>2011-12-16 10:58:35 -0800
commit36632047bebbd435610944ad9e7850163b260645 (patch)
tree240f72de43474e8aa38e43cdd1398fab6c47b62f /pym/_emerge/PipeReader.py
parent11cf001c20d94eb477e8a9b253e657716702b845 (diff)
downloadportage-36632047bebbd435610944ad9e7850163b260645.tar.gz
portage-36632047bebbd435610944ad9e7850163b260645.tar.bz2
portage-36632047bebbd435610944ad9e7850163b260645.zip
Fix EIO handling for PollSelectAdapter.
In PipeReader and AbstractPollTask, we have to treat EIO as EOF, in order to terminate the select loop at the correct time when using PollSelectAdapter. This fixes a regression in EIO handling since commits 915348ce34fc499ac295b8f0ffee9f0829803542 adn 30d2d0a9db486c5a70848ad5d27b37a3ec48f271.
Diffstat (limited to 'pym/_emerge/PipeReader.py')
-rw-r--r--pym/_emerge/PipeReader.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py
index 78acb72df..a465c2a28 100644
--- a/pym/_emerge/PipeReader.py
+++ b/pym/_emerge/PipeReader.py
@@ -66,9 +66,14 @@ class PipeReader(AbstractPollTask):
except OSError as e:
# EIO happens with pty on Linux after the
# slave end of the pty has been closed.
- if e.errno not in (errno.EAGAIN, errno.EIO):
+ if e.errno == errno.EIO:
+ self._unregister()
+ self.wait()
+ break
+ elif e.errno == errno.EAGAIN:
+ break
+ else:
raise
- break
else:
if data:
self._read_data.append(data)