瀏覽代碼

Fixed an issue with shortcuts pointing to a network share

LukePulverenti Luke Pulverenti luke pulverenti 12 年之前
父節點
當前提交
24d221709d
共有 2 個文件被更改,包括 17 次插入2 次删除
  1. 16 1
      MediaBrowser.Controller/IO/FileData.cs
  2. 1 1
      MediaBrowser.Controller/Kernel.cs

+ 16 - 1
MediaBrowser.Controller/IO/FileData.cs

@@ -1,4 +1,5 @@
-using System;
+using MediaBrowser.Common.Logging;
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.Runtime.InteropServices;
 using System.Runtime.InteropServices;
@@ -12,6 +13,7 @@ namespace MediaBrowser.Controller.IO
     {
     {
         public const int MAX_PATH = 260;
         public const int MAX_PATH = 260;
         public const int MAX_ALTERNATE = 14;
         public const int MAX_ALTERNATE = 14;
+        public static IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);
 
 
         /// <summary>
         /// <summary>
         /// Gets information about a path
         /// Gets information about a path
@@ -20,8 +22,21 @@ namespace MediaBrowser.Controller.IO
         {
         {
             WIN32_FIND_DATA data;
             WIN32_FIND_DATA data;
             IntPtr handle = FindFirstFile(path, out data);
             IntPtr handle = FindFirstFile(path, out data);
+
+            if (handle == INVALID_HANDLE_VALUE && !Path.HasExtension(path))
+            {
+                Logger.LogInfo("Handle came back invalid for {0}. Since this is a directory we'll try appending \\*.", path);
+                
+                FindClose(handle);
+
+                handle = FindFirstFile(Path.Combine(path, "*"), out data);
+            }
+
             if (handle == IntPtr.Zero)
             if (handle == IntPtr.Zero)
+            {
                 throw new IOException("FindFirstFile failed");
                 throw new IOException("FindFirstFile failed");
+            }
+            
             FindClose(handle);
             FindClose(handle);
 
 
             data.Path = path;
             data.Path = path;

+ 1 - 1
MediaBrowser.Controller/Kernel.cs

@@ -217,7 +217,7 @@ namespace MediaBrowser.Controller
             }
             }
             else
             else
             {
             {
-                result.Success = GetMD5(password).Equals(user.Password);
+                result.Success = GetMD5((password ?? string.Empty)).Equals(user.Password);
 
 
                 // Update LastActivityDate and LastLoginDate, then save
                 // Update LastActivityDate and LastLoginDate, then save
                 if (result.Success)
                 if (result.Success)