summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fifo.py28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/fifo.py b/src/fifo.py
index 983b21e4..863ef228 100644
--- a/src/fifo.py
+++ b/src/fifo.py
@@ -1,12 +1,8 @@
-# Copyright 2011 Florent Le Coz <louiz@louiz.org>
-#
-# This file is part of Poezio.
-#
-# Poezio is free software: you can redistribute it and/or modify
-# it under the terms of the zlib license. See the COPYING file.
-
"""
Defines the Fifo class
+
+This fifo allows simple communication between a remote poezio
+and a local computer, with ssh+cat.
"""
import logging
@@ -20,12 +16,11 @@ class OpenTrick(threading.Thread):
A threaded trick to make the open for writing succeed.
A fifo cannot be opened for writing if it has not been
yet opened by the other hand for reading.
- So, we just open the fifo for reading and close it
- immediately afterwards.
- Once that is done, we can freely keep the fifo open for
- writing and write things in it. The writing can fail if
- there’s still nothing reading that fifo, but we just yell
- an error in that case.
+ So, we just open the fifo for reading and we do not close
+ it afterwards, because if the other reader disconnects,
+ we will receive a SIGPIPE. And we do not want that.
+
+ (we never read anything from it, obviously)
"""
def __init__(self, path):
threading.Thread.__init__(self)
@@ -62,10 +57,15 @@ class Fifo(object):
self.fd.flush()
def readline(self):
+ "Read a line from the fifo"
return self.fd.readline()
def __del__(self):
+ "Close opened fds"
try:
self.fd.close()
+ if self.trick:
+ self.trick.fd.close()
except:
- pass
+ log.error('Unable to close descriptors for the fifo',
+ exc_info=True)