media_cache: Mark cache entry stale if cache file is removed
authorSean Bright <sean.bright@gmail.com>
Tue, 28 Feb 2017 19:48:51 +0000 (14:48 -0500)
committerSean Bright <sean.bright@gmail.com>
Tue, 28 Feb 2017 22:09:54 +0000 (16:09 -0600)
In the event that a cache file is removed out from under us, we should
treat the cache entry as stale and force a refresh.

ASTERISK-26774 #close
Reported by: Igor Gamayunov

Change-Id: I3b1bd0c999d59d18664ef73a29823bc5b431dc52

main/media_cache.c

index 7be3588..2592f35 100644 (file)
@@ -224,7 +224,8 @@ int ast_media_cache_retrieve(const char *uri, const char *preferred_file_name,
         */
        bucket_file = ao2_find(media_cache, uri, OBJ_SEARCH_KEY | OBJ_NOLOCK);
        if (bucket_file) {
-               if (!ast_bucket_file_is_stale(bucket_file)) {
+               if (!ast_bucket_file_is_stale(bucket_file)
+                       && !access(bucket_file->path, R_OK)) {
                        ast_copy_string(file_path, bucket_file->path, len);
                        if ((ext = strrchr(file_path, '.'))) {
                                *ext = '\0';