summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/FifoIpcDaemon.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-09-02 00:05:06 -0700
committerZac Medico <zmedico@gentoo.org>2010-09-02 00:05:06 -0700
commit252fa9a50c264e9827c42c631291749ad62d0f4d (patch)
tree65a79cae3f0b770f60b344fbc14d65e67c9c78d1 /pym/_emerge/FifoIpcDaemon.py
parent7dfbdb9025376df95af58f42e304f9ef627576e6 (diff)
downloadportage-252fa9a50c264e9827c42c631291749ad62d0f4d.tar.gz
portage-252fa9a50c264e9827c42c631291749ad62d0f4d.tar.bz2
portage-252fa9a50c264e9827c42c631291749ad62d0f4d.zip
Adjust EbuildIpcDaemon pickle read and write code in order to ensure
atomc reading and writing of whole pickles. This should be the least error-prone approach, given the non-blocking nature of the streams.
Diffstat (limited to 'pym/_emerge/FifoIpcDaemon.py')
-rw-r--r--pym/_emerge/FifoIpcDaemon.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/pym/_emerge/FifoIpcDaemon.py b/pym/_emerge/FifoIpcDaemon.py
index 60a5096a5..b879fda95 100644
--- a/pym/_emerge/FifoIpcDaemon.py
+++ b/pym/_emerge/FifoIpcDaemon.py
@@ -16,7 +16,10 @@ class FifoIpcDaemon(AbstractPollTask):
def _start(self):
self._files = self._files_dict()
input_fd = os.open(self.input_fifo, os.O_RDONLY|os.O_NONBLOCK)
- self._files.pipe_in = os.fdopen(input_fd, 'rb')
+
+ # File streams are in unbuffered mode since we do atomic
+ # read and write of whole pickles.
+ self._files.pipe_in = os.fdopen(input_fd, 'rb', 0)
self._reg_id = self.scheduler.register(
self._files.pipe_in.fileno(),