summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAntti Ajanki <antti.ajanki@iki.fi>2011-07-08 11:56:24 +0300
committerAntti Ajanki <antti.ajanki@iki.fi>2011-07-08 11:56:24 +0300
commitd0a1783c86eebf65628f5cbeb9a7e0b4872f8ad8 (patch)
tree76b0e907c4ffdcc8c24b62cfa8e47654ccb7ec4c /src
parent250c54fb26373558e4006072152d5d266cc1dade (diff)
downloadvdr-plugin-webvideo-d0a1783c86eebf65628f5cbeb9a7e0b4872f8ad8.tar.gz
vdr-plugin-webvideo-d0a1783c86eebf65628f5cbeb9a7e0b4872f8ad8.tar.bz2
catch exception when unlinking
Diffstat (limited to 'src')
-rw-r--r--src/libwebvi/webvi/request.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/libwebvi/webvi/request.py b/src/libwebvi/webvi/request.py
index 313a82e..7d2a32d 100644
--- a/src/libwebvi/webvi/request.py
+++ b/src/libwebvi/webvi/request.py
@@ -185,6 +185,21 @@ def brace_substitution(template, subs):
strbuf.write(template[last_pos:])
return strbuf.getvalue()
+def create_fifo():
+ while True:
+ fifoname = tempfile.mktemp()
+ try:
+ os.mkfifo(fifoname, 0600)
+ return fifoname
+ except IOError:
+ pass
+
+def safe_unlink(name):
+ try:
+ os.unlink(name)
+ except OSError:
+ pass
+
class Request:
DEFAULT_URL_PRIORITY = 50
@@ -317,29 +332,20 @@ class Request:
if not url.startswith('wvt:///bin/'):
self.request_done(406,'Streaming not supported')
- fifo = self.create_fifo()
+ fifo = create_fifo()
fifourl = url + '&arg=' + fifo
# Unlink fifo when downloader has finished. Note: If the
# reader doesn't read the fifo for some reason, the writer
# process will deadlock and the fifo is never unlinked.
self.setup_downloader(fifourl, None, None,
- lambda x, y: os.unlink(fifo))
+ lambda x, y: safe_unlink(fifo))
self.writewrapper('file://' + fifo)
self.request_done(0, None)
else:
self.writewrapper(url)
self.request_done(0, None)
- def create_fifo(self):
- while True:
- fifoname = tempfile.mktemp()
- try:
- os.mkfifo(fifoname, 0600)
- return fifoname
- except IOError:
- pass
-
def send_mainmenu(self):
"""Build the XML main menu from the module description files
in the hard drive.