diff options
author | Antti Ajanki <antti.ajanki@iki.fi> | 2011-07-08 11:56:24 +0300 |
---|---|---|
committer | Antti Ajanki <antti.ajanki@iki.fi> | 2011-07-08 11:56:24 +0300 |
commit | d0a1783c86eebf65628f5cbeb9a7e0b4872f8ad8 (patch) | |
tree | 76b0e907c4ffdcc8c24b62cfa8e47654ccb7ec4c | |
parent | 250c54fb26373558e4006072152d5d266cc1dade (diff) | |
download | vdr-plugin-webvideo-d0a1783c86eebf65628f5cbeb9a7e0b4872f8ad8.tar.gz vdr-plugin-webvideo-d0a1783c86eebf65628f5cbeb9a7e0b4872f8ad8.tar.bz2 |
catch exception when unlinking
-rw-r--r-- | src/libwebvi/webvi/request.py | 28 |
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. |