diff --git a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs index a51ea57266..094bddfda9 100644 --- a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs +++ b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs @@ -87,8 +87,9 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp private void ProcessContext(HttpListenerContext context) { - //Task.Factory.StartNew(() => InitTask(context), TaskCreationOptions.DenyChildAttach | TaskCreationOptions.PreferFairness); - Task.Run(() => InitTask(context, _disposeCancellationToken)); + _logger.Info("thread id {0}", Thread.CurrentThread.ManagedThreadId); + InitTask(context, _disposeCancellationToken); + //Task.Run(() => InitTask(context, _disposeCancellationToken)); } private Task InitTask(HttpListenerContext context, CancellationToken cancellationToken) diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs index 7b9083f006..9606b60b80 100644 --- a/Emby.Server.Implementations/IO/FileRefresher.cs +++ b/Emby.Server.Implementations/IO/FileRefresher.cs @@ -180,7 +180,7 @@ namespace Emby.Server.Implementations.IO try { - await item.ChangedExternally().ConfigureAwait(false); + item.ChangedExternally(); } catch (IOException ex) { @@ -282,11 +282,11 @@ namespace Emby.Server.Implementations.IO return false; } } - //catch (DirectoryNotFoundException) - //{ - // // File may have been deleted - // return false; - //} + catch (DirectoryNotFoundException) + { + // File may have been deleted + return false; + } catch (FileNotFoundException) { // File may have been deleted diff --git a/Emby.Server.Implementations/Session/HttpSessionController.cs b/Emby.Server.Implementations/Session/HttpSessionController.cs index 2acc3902fd..92fa6c4242 100644 --- a/Emby.Server.Implementations/Session/HttpSessionController.cs +++ b/Emby.Server.Implementations/Session/HttpSessionController.cs @@ -66,19 +66,19 @@ namespace Emby.Server.Implementations.Session return SendMessage(name, new Dictionary(), cancellationToken); } - private async Task SendMessage(string name, + private Task SendMessage(string name, Dictionary args, CancellationToken cancellationToken) { var url = PostUrl + "/" + name + ToQueryString(args); - await _httpClient.Post(new HttpRequestOptions + return _httpClient.Post(new HttpRequestOptions { Url = url, CancellationToken = cancellationToken, BufferContent = false - }).ConfigureAwait(false); + }); } public Task SendSessionEndedNotification(SessionInfoDto sessionInfo, CancellationToken cancellationToken) @@ -159,8 +159,24 @@ namespace Emby.Server.Implementations.Session public Task SendMessage(string name, T data, CancellationToken cancellationToken) { - // Not supported or needed right now - return Task.FromResult(true); + var url = PostUrl + "/" + name; + + var options = new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + BufferContent = false + }; + + options.RequestContent = _json.SerializeToString(data); + options.RequestContentType = "application/json"; + + return _httpClient.Post(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + BufferContent = false + }); } private string ToQueryString(Dictionary nvc) diff --git a/MediaBrowser.Api/Playback/UniversalAudioService.cs b/MediaBrowser.Api/Playback/UniversalAudioService.cs index c28014f9bc..e5ece3984d 100644 --- a/MediaBrowser.Api/Playback/UniversalAudioService.cs +++ b/MediaBrowser.Api/Playback/UniversalAudioService.cs @@ -61,7 +61,7 @@ namespace MediaBrowser.Api.Playback { } - //[Authenticated] + [Authenticated] public class UniversalAudioService : BaseApiService { public UniversalAudioService(IServerConfigurationManager serverConfigurationManager, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IDlnaManager dlnaManager, IDeviceManager deviceManager, ISubtitleEncoder subtitleEncoder, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IJsonSerializer jsonSerializer, IAuthorizationContext authorizationContext, IImageProcessor imageProcessor, INetworkManager networkManager, IEnvironmentInfo environmentInfo) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a46ac91358..603e59338c 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1854,10 +1854,13 @@ namespace MediaBrowser.Controller.Entities /// Do whatever refreshing is necessary when the filesystem pertaining to this item has changed. /// /// Task. - public virtual Task ChangedExternally() + public virtual void ChangedExternally() { - ProviderManager.QueueRefresh(Id, new MetadataRefreshOptions(FileSystem), RefreshPriority.High); - return Task.FromResult(true); + ProviderManager.QueueRefresh(Id, new MetadataRefreshOptions(FileSystem) + { + ValidateChildren = true, + + }, RefreshPriority.High); } /// diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 28856b753e..7566911a10 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -1325,19 +1325,6 @@ namespace MediaBrowser.Controller.Entities return false; } - /// - /// Folders need to validate and refresh - /// - /// Task. - public override async Task ChangedExternally() - { - var progress = new Progress(); - - await ValidateChildren(progress, CancellationToken.None).ConfigureAwait(false); - - await base.ChangedExternally().ConfigureAwait(false); - } - /// /// Marks the played. /// diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs index ed1e4325d5..86cef628e0 100644 --- a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs +++ b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs @@ -15,6 +15,7 @@ namespace MediaBrowser.Controller.Providers public bool ReplaceAllMetadata { get; set; } public bool IsPostRecursiveRefresh { get; set; } + public bool ValidateChildren { get; set; } public MetadataRefreshMode MetadataRefreshMode { get; set; } public RemoteSearchResult SearchResult { get; set; } diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index f80b99c7a3..16dfd89455 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -872,7 +872,7 @@ namespace MediaBrowser.Providers.Manager if (!_isProcessingRefreshQueue) { _isProcessingRefreshQueue = true; - Task.Run(() => StartProcessingRefreshQueue()); + Task.Run(StartProcessingRefreshQueue); } } } @@ -897,6 +897,15 @@ namespace MediaBrowser.Providers.Manager // Try to throttle this a little bit. await Task.Delay(100).ConfigureAwait(false); + if (refreshItem.Item2.ValidateChildren) + { + var folder = item as Folder; + if (folder != null) + { + await folder.ValidateChildren(new Progress(), CancellationToken.None).ConfigureAwait(false); + } + } + var artist = item as MusicArtist; var task = artist == null ? RefreshItem(item, refreshItem.Item2, CancellationToken.None) diff --git a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs index b4c6aa02c5..f7cd9dd13d 100644 --- a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs +++ b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs @@ -163,7 +163,7 @@ namespace MediaBrowser.Providers.Subtitles Provider = provider.Name }, _logger); - + throw; } } @@ -256,7 +256,8 @@ namespace MediaBrowser.Providers.Subtitles _monitor.ReportFileSystemChangeComplete(path, false); } - return _libraryManager.GetItemById(itemId).ChangedExternally(); + _libraryManager.GetItemById(itemId).ChangedExternally(); + return Task.FromResult(true); } public Task GetRemoteSubtitles(string id, CancellationToken cancellationToken) diff --git a/SharedVersion.cs b/SharedVersion.cs index 85273a33eb..46ba93e6b0 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.17.16")] +[assembly: AssemblyVersion("3.2.17.17")]