Przeglądaj źródła

add mono CreateWebRequest workaround

Luke Pulverenti 10 lat temu
rodzic
commit
e8322b4a12

+ 15 - 8
MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs

@@ -446,22 +446,29 @@ namespace MediaBrowser.Api.Playback.Hls
 
             while (!cancellationToken.IsCancellationRequested)
             {
-                using (var fileStream = GetPlaylistFileStream(playlistPath))
+                try
                 {
-                    using (var reader = new StreamReader(fileStream))
+                    using (var fileStream = GetPlaylistFileStream(playlistPath))
                     {
-                        while (!reader.EndOfStream)
+                        using (var reader = new StreamReader(fileStream))
                         {
-                            var text = await reader.ReadLineAsync().ConfigureAwait(false);
-
-                            // If it appears in the playlist, it's done
-                            if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
+                            while (!reader.EndOfStream)
                             {
-                                return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
+                                var text = await reader.ReadLineAsync().ConfigureAwait(false);
+
+                                // If it appears in the playlist, it's done
+                                if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
+                                {
+                                    return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
+                                }
                             }
                         }
                     }
                 }
+                catch (IOException)
+                {
+                    // May get an error if the file is locked
+                }
 
                 await Task.Delay(100, cancellationToken).ConfigureAwait(false);
             }

+ 17 - 0
MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs

@@ -105,6 +105,23 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             return client;
         }
 
+        private WebRequest CreateWebRequest(string url)
+        {
+            try
+            {
+                return WebRequest.Create(url);
+            }
+            catch (NotSupportedException)
+            {
+                //Webrequest creation does fail on MONO randomly when using WebRequest.Create
+                //the issue occurs in the GetCreator method here: http://www.oschina.net/code/explore/mono-2.8.1/mcs/class/System/System.Net/WebRequest.cs
+
+                var type = Type.GetType("System.Net.HttpRequestCreator, System, Version=4.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089");
+                var creator = Activator.CreateInstance(type, nonPublic: true) as IWebRequestCreate;
+                return creator.Create(new Uri(url)) as HttpWebRequest;
+            }
+        }
+
         private WebRequest GetRequest(HttpRequestOptions options, string method, bool enableHttpCompression)
         {
             var request = WebRequest.Create(options.Url);

+ 2 - 2
MediaBrowser.Server.Implementations/Localization/Server/server.json

@@ -85,8 +85,8 @@
     "ButtonDonateWithPayPal": "Donate with PayPal",
     "OptionDetectArchiveFilesAsMedia": "Detect archive files as media",
     "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.",
-    "LabelEnterConnectUserName": "User name or email:",
-    "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.",
+    "LabelEnterConnectUserName": "Username or email:",
+    "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.",
     "LabelEnableEnhancedMovies": "Enable enhanced movie displays",
     "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.",
     "HeaderSyncJobInfo": "Sync Job",

+ 2 - 1
MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs

@@ -179,7 +179,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager
 
             if (!message.StartsWith("{", StringComparison.OrdinalIgnoreCase))
             {
-                _logger.Error("Received web socket message that is not a json structure: " + message);
+                // This info is useful sometimes but also clogs up the log
+                //_logger.Error("Received web socket message that is not a json structure: " + message);
                 return;
             }