From 1a1fbec334cb9494bfc73446a980474b75299113 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 30 Nov 2015 22:54:24 -0500 Subject: [PATCH] add error handling when resolving shortcuts --- MediaBrowser.Controller/IO/FileData.cs | 47 +++++++++++++++----------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/MediaBrowser.Controller/IO/FileData.cs b/MediaBrowser.Controller/IO/FileData.cs index e2bdb28e34..ed5acbb3dd 100644 --- a/MediaBrowser.Controller/IO/FileData.cs +++ b/MediaBrowser.Controller/IO/FileData.cs @@ -26,12 +26,12 @@ namespace MediaBrowser.Controller.IO /// if set to true [resolve shortcuts]. /// Dictionary{System.StringFileSystemInfo}. /// path - public static Dictionary GetFilteredFileSystemEntries(IDirectoryService directoryService, - string path, - IFileSystem fileSystem, - ILogger logger, - ItemResolveArgs args, - int flattenFolderDepth = 0, + public static Dictionary GetFilteredFileSystemEntries(IDirectoryService directoryService, + string path, + IFileSystem fileSystem, + ILogger logger, + ItemResolveArgs args, + int flattenFolderDepth = 0, bool resolveShortcuts = true) { if (string.IsNullOrEmpty(path)) @@ -60,22 +60,29 @@ namespace MediaBrowser.Controller.IO if (resolveShortcuts && fileSystem.IsShortcut(fullName)) { - var newPath = fileSystem.ResolveShortcut(fullName); - - if (string.IsNullOrWhiteSpace(newPath)) + try { - //invalid shortcut - could be old or target could just be unavailable - logger.Warn("Encountered invalid shortcut: " + fullName); - continue; + var newPath = fileSystem.ResolveShortcut(fullName); + + if (string.IsNullOrWhiteSpace(newPath)) + { + //invalid shortcut - could be old or target could just be unavailable + logger.Warn("Encountered invalid shortcut: " + fullName); + continue; + } + + // Don't check if it exists here because that could return false for network shares. + var data = fileSystem.GetDirectoryInfo(newPath); + + // add to our physical locations + args.AddAdditionalLocation(newPath); + + dict[newPath] = data; + } + catch (Exception ex) + { + logger.ErrorException("Error resolving shortcut from {0}", ex, fullName); } - - // Don't check if it exists here because that could return false for network shares. - var data = fileSystem.GetDirectoryInfo(newPath); - - // add to our physical locations - args.AddAdditionalLocation(newPath); - - dict[newPath] = data; } else if (flattenFolderDepth > 0 && isDirectory) {