diff --git a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs index c303d0a008..58b0348172 100644 --- a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs +++ b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs @@ -30,15 +30,17 @@ namespace Tgstation.Server.Host.IO { var tasks = new List(); + // check if we are a symbolic link + if (!dir.Attributes.HasFlag(FileAttributes.Directory) || dir.Attributes.HasFlag(FileAttributes.ReparsePoint)) + { + dir.Delete(); + return; + } + foreach (var subDir in dir.EnumerateDirectories()) { cancellationToken.ThrowIfCancellationRequested(); - - // if below succeeds this is probably a symlink - if (!subDir.Attributes.HasFlag(FileAttributes.Directory) || subDir.Attributes.HasFlag(FileAttributes.ReparsePoint)) - subDir.Delete(); - else - tasks.Add(NormalizeAndDelete(subDir, cancellationToken)); + tasks.Add(NormalizeAndDelete(subDir, cancellationToken)); } foreach (var file in dir.EnumerateFiles()) diff --git a/src/Tgstation.Server.Host/IO/IIOManager.cs b/src/Tgstation.Server.Host/IO/IIOManager.cs index 4ce21a7c97..ec56b0209a 100644 --- a/src/Tgstation.Server.Host/IO/IIOManager.cs +++ b/src/Tgstation.Server.Host/IO/IIOManager.cs @@ -139,7 +139,7 @@ namespace Tgstation.Server.Host.IO Task CreateDirectory(string path, CancellationToken cancellationToken); /// - /// Recursively delete a directory + /// Recursively delete a directory, removes and does not enter any symlinks encounterd. /// /// The path to the directory to delete /// A for the operation