diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2011-04-09 03:32:37 +0400 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2011-04-19 21:48:07 +0400 |
commit | 55815edca038997ec283569a192a3eca7f2143bc (patch) | |
tree | 6c3910611d7f68cd049c4b66a57c525d0de86aee /ffserver.c | |
parent | 59d96941f0285a501989d5f2c9b69be0a1393ed5 (diff) |
prefer avio_check() over url_exist()
The problem with url_exist() is that it tries to open a resource in
RDONLY mode. If the file is a FIFO and there is already a reading
client, the open() call will hang.
By using avio_check() with access mode of 0, the second reading
process will check if the file exists without attempting to open it,
thus avoiding the lock.
Fix issue #1663.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'ffserver.c')
-rw-r--r-- | ffserver.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ffserver.c b/ffserver.c index 5defd40847..d341182a4f 100644 --- a/ffserver.c +++ b/ffserver.c @@ -3679,7 +3679,7 @@ static void build_feed_streams(void) for(feed = first_feed; feed != NULL; feed = feed->next_feed) { int fd; - if (url_exist(feed->feed_filename)) { + if (avio_check(feed->feed_filename, AVIO_FLAG_READ) > 0) { /* See if it matches */ AVFormatContext *s; int matches = 0; @@ -3752,7 +3752,7 @@ static void build_feed_streams(void) unlink(feed->feed_filename); } } - if (!url_exist(feed->feed_filename)) { + if (avio_check(feed->feed_filename, AVIO_FLAG_WRITE) <= 0) { AVFormatContext s1 = {0}, *s = &s1; if (feed->readonly) { |