From 274e2eac868191ef0fda30cf1a2ec9795562c432 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 26 Feb 2014 08:08:04 -0800 Subject: [PATCH] DiskSpaceService will not blow up if total or free space is null --- src/NzbDrone.Core/DiskSpace/DiskSpaceService.cs | 13 +++++++++---- src/NzbDrone.Mono/DiskProvider.cs | 12 ++++++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/NzbDrone.Core/DiskSpace/DiskSpaceService.cs b/src/NzbDrone.Core/DiskSpace/DiskSpaceService.cs index b57dac3e7..5f79a3e93 100644 --- a/src/NzbDrone.Core/DiskSpace/DiskSpaceService.cs +++ b/src/NzbDrone.Core/DiskSpace/DiskSpaceService.cs @@ -69,14 +69,19 @@ namespace NzbDrone.Core.DiskSpace try { - var freeSpace = _diskProvider.GetAvailableSpace(path).Value; - var totalSpace = _diskProvider.GetTotalSize(path).Value; + var freeSpace = _diskProvider.GetAvailableSpace(path); + var totalSpace = _diskProvider.GetTotalSize(path); + + if (!freeSpace.HasValue || !totalSpace.HasValue) + { + continue; + } diskSpace = new DiskSpace { Path = path, - FreeSpace = freeSpace, - TotalSpace = totalSpace + FreeSpace = freeSpace.Value, + TotalSpace = totalSpace.Value }; diskSpace.Label = _diskProvider.GetVolumeLabel(path); diff --git a/src/NzbDrone.Mono/DiskProvider.cs b/src/NzbDrone.Mono/DiskProvider.cs index cfbaa98c4..3a2d2e8b2 100644 --- a/src/NzbDrone.Mono/DiskProvider.cs +++ b/src/NzbDrone.Mono/DiskProvider.cs @@ -24,7 +24,15 @@ namespace NzbDrone.Mono try { - return GetDriveInfoLinux(path).AvailableFreeSpace; + var driveInfo = GetDriveInfoLinux(path); + + if (driveInfo == null) + { + Logger.Trace("Unable to get free space for '{0}', unable to find suitable drive", path); + return null; + } + + return driveInfo.AvailableFreeSpace; } catch (InvalidOperationException e) { @@ -132,7 +140,7 @@ namespace NzbDrone.Mono drives.Where(drive => drive.IsReady && path.StartsWith(drive.Name, StringComparison.CurrentCultureIgnoreCase)) .OrderByDescending(drive => drive.Name.Length) - .First(); + .FirstOrDefault(); } } }