diff --git a/Emby.Dlna/Service/BaseControlHandler.cs b/Emby.Dlna/Service/BaseControlHandler.cs index 35203edaed..8f91626d48 100644 --- a/Emby.Dlna/Service/BaseControlHandler.cs +++ b/Emby.Dlna/Service/BaseControlHandler.cs @@ -129,7 +129,7 @@ namespace Emby.Dlna.Service reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -166,7 +166,7 @@ namespace Emby.Dlna.Service reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -197,7 +197,7 @@ namespace Emby.Dlna.Service reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs index d9c3ac5ab2..b337e1b9e4 100644 --- a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs @@ -4,6 +4,8 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Naming.Video; using System; using System.IO; +using System.Linq; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Logging; namespace Emby.Server.Implementations.Library.Resolvers @@ -59,7 +61,7 @@ namespace Emby.Server.Implementations.Library.Resolvers if (child.IsDirectory) { - if (IsDvdDirectory(filename)) + if (IsDvdDirectory(child.FullName, filename, args.DirectoryService)) { videoInfo = parser.ResolveDirectory(args.Path); @@ -76,7 +78,7 @@ namespace Emby.Server.Implementations.Library.Resolvers }; break; } - if (IsBluRayDirectory(filename)) + if (IsBluRayDirectory(child.FullName, filename, args.DirectoryService)) { videoInfo = parser.ResolveDirectory(args.Path); @@ -267,11 +269,14 @@ namespace Emby.Server.Implementations.Library.Resolvers /// /// Determines whether [is DVD directory] [the specified directory name]. /// - /// Name of the directory. - /// true if [is DVD directory] [the specified directory name]; otherwise, false. - protected bool IsDvdDirectory(string directoryName) + protected bool IsDvdDirectory(string fullPath, string directoryName, IDirectoryService directoryService) { - return string.Equals(directoryName, "video_ts", StringComparison.OrdinalIgnoreCase); + if (!string.Equals(directoryName, "video_ts", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + return directoryService.GetFiles(fullPath).Any(i => string.Equals(i.Extension, ".vob", StringComparison.OrdinalIgnoreCase)); } /// @@ -287,11 +292,14 @@ namespace Emby.Server.Implementations.Library.Resolvers /// /// Determines whether [is blu ray directory] [the specified directory name]. /// - /// Name of the directory. - /// true if [is blu ray directory] [the specified directory name]; otherwise, false. - protected bool IsBluRayDirectory(string directoryName) + protected bool IsBluRayDirectory(string fullPath, string directoryName, IDirectoryService directoryService) { - return string.Equals(directoryName, "bdmv", StringComparison.OrdinalIgnoreCase); + if (!string.Equals(directoryName, "bdmv", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + return directoryService.GetFiles(fullPath).Any(i => string.Equals(i.Extension, ".m2ts", StringComparison.OrdinalIgnoreCase)); } } } diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 002505b569..55a63b4e5d 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -366,7 +366,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies if (child.IsDirectory) { - if (IsDvdDirectory(filename)) + if (IsDvdDirectory(child.FullName, filename, directoryService)) { var movie = new T { @@ -376,7 +376,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies Set3DFormat(movie); return movie; } - if (IsBluRayDirectory(filename)) + if (IsBluRayDirectory(child.FullName, filename, directoryService)) { var movie = new T { @@ -446,15 +446,14 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies var subfolders = subFileEntries .Where(e => e.IsDirectory) - .Select(d => d.Name) .ToList(); - if (subfolders.Any(IsDvdDirectory)) + if (subfolders.Any(s => IsDvdDirectory(s.FullName, s.Name, directoryService))) { videoTypes.Add(VideoType.Dvd); return true; } - if (subfolders.Any(IsBluRayDirectory)) + if (subfolders.Any(s => IsBluRayDirectory(s.FullName, s.Name, directoryService))) { videoTypes.Add(VideoType.BluRay); return true; diff --git a/Emby.Server.Implementations/News/NewsEntryPoint.cs b/Emby.Server.Implementations/News/NewsEntryPoint.cs index 1497d066fe..51016f2881 100644 --- a/Emby.Server.Implementations/News/NewsEntryPoint.cs +++ b/Emby.Server.Implementations/News/NewsEntryPoint.cs @@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.News reader.MoveToContent(); reader.Read(); - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -162,7 +162,7 @@ namespace Emby.Server.Implementations.News reader.MoveToContent(); reader.Read(); - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -199,7 +199,7 @@ namespace Emby.Server.Implementations.News reader.MoveToContent(); reader.Read(); - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs index 31b13056ca..43a0783165 100644 --- a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs @@ -110,9 +110,10 @@ namespace MediaBrowser.LocalMetadata.Parsers using (var reader = XmlReader.Create(streamReader, settings)) { reader.MoveToContent(); + reader.Read(); // Loop through each element - while (reader.Read()) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -120,6 +121,10 @@ namespace MediaBrowser.LocalMetadata.Parsers { FetchDataFromXmlNode(reader, item); } + else + { + reader.Read(); + } } } } @@ -752,12 +757,12 @@ namespace MediaBrowser.LocalMetadata.Parsers case "Format3D": { + var val = reader.ReadElementContentAsString(); + var video = item as Video; if (video != null) { - var val = reader.ReadElementContentAsString(); - if (string.Equals("HSBS", val, StringComparison.OrdinalIgnoreCase)) { video.Video3DFormat = Video3DFormat.HalfSideBySide; @@ -808,8 +813,10 @@ namespace MediaBrowser.LocalMetadata.Parsers private void FetchFromSharesNode(XmlReader reader, IHasShares item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -833,6 +840,10 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } } @@ -841,8 +852,10 @@ namespace MediaBrowser.LocalMetadata.Parsers var share = new Share(); reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -865,6 +878,10 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } return share; @@ -873,8 +890,10 @@ namespace MediaBrowser.LocalMetadata.Parsers private void FetchFromCountriesNode(XmlReader reader, T item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -895,6 +914,10 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } } @@ -909,7 +932,7 @@ namespace MediaBrowser.LocalMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -945,8 +968,10 @@ namespace MediaBrowser.LocalMetadata.Parsers private void FetchFromGenresNode(XmlReader reader, T item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -968,14 +993,20 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } } private void FetchFromTagsNode(XmlReader reader, BaseItem item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -997,14 +1028,20 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } } private void FetchFromKeywordsNode(XmlReader reader, BaseItem item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1026,6 +1063,10 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } } @@ -1037,8 +1078,10 @@ namespace MediaBrowser.LocalMetadata.Parsers private void FetchDataFromPersonsNode(XmlReader reader, MetadataResult item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1066,14 +1109,20 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } } private void FetchDataFromTrailersNode(XmlReader reader, IHasTrailers item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1095,87 +1144,11 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } - } - } - - protected List FetchChaptersFromXmlNode(BaseItem item, XmlReader reader) - { - using (reader) - { - return GetChaptersFromXmlNode(reader) - .Where(i => i.StartPositionTicks >= 0) - .ToList(); - } - } - - private IEnumerable GetChaptersFromXmlNode(XmlReader reader) - { - var chapters = new List(); - - reader.MoveToContent(); - - while (reader.Read()) - { - if (reader.NodeType == XmlNodeType.Element) + else { - switch (reader.Name) - { - case "Chapter": - { - using (var subtree = reader.ReadSubtree()) - { - chapters.Add(GetChapterInfoFromXmlNode(subtree)); - } - break; - } - - default: - reader.Skip(); - break; - } + reader.Read(); } } - - return chapters; - } - - private ChapterInfo GetChapterInfoFromXmlNode(XmlReader reader) - { - var chapter = new ChapterInfo(); - - reader.MoveToContent(); - - while (reader.Read()) - { - if (reader.NodeType == XmlNodeType.Element) - { - switch (reader.Name) - { - case "StartPositionMs": - { - var val = reader.ReadElementContentAsString(); - - var ms = long.Parse(val, _usCulture); - - chapter.StartPositionTicks = TimeSpan.FromMilliseconds(ms).Ticks; - - break; - } - - case "Name": - { - chapter.Name = reader.ReadElementContentAsString(); - break; - } - - default: - reader.Skip(); - break; - } - } - } - - return chapter; } /// @@ -1186,8 +1159,10 @@ namespace MediaBrowser.LocalMetadata.Parsers private void FetchFromStudiosNode(XmlReader reader, T item) { reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1209,6 +1184,10 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } } @@ -1225,8 +1204,10 @@ namespace MediaBrowser.LocalMetadata.Parsers int? sortOrder = null; reader.MoveToContent(); + reader.Read(); - while (reader.Read()) + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1277,6 +1258,10 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } var personInfo = new PersonInfo @@ -1292,14 +1277,16 @@ namespace MediaBrowser.LocalMetadata.Parsers protected LinkedChild GetLinkedChild(XmlReader reader) { - reader.MoveToContent(); - var linkedItem = new LinkedChild { Type = LinkedChildType.Manual }; - while (reader.Read()) + reader.MoveToContent(); + reader.Read(); + + // Loop through each element + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1316,6 +1303,10 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } } + else + { + reader.Read(); + } } // This is valid @@ -1335,7 +1326,7 @@ namespace MediaBrowser.LocalMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs index c42b44f9e5..9dcfa2f765 100644 --- a/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.LocalMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs index ee986ae2df..d4334bf629 100644 --- a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs @@ -71,7 +71,7 @@ namespace MediaBrowser.LocalMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -115,7 +115,7 @@ namespace MediaBrowser.LocalMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs index 02c34320b6..b52bae2ce7 100644 --- a/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs @@ -724,7 +724,7 @@ namespace MediaBrowser.LocalMetadata.Savers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs index 9804bc1db6..2b3479b768 100644 --- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs +++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs @@ -211,7 +211,7 @@ namespace MediaBrowser.MediaEncoding.Probing reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -253,7 +253,7 @@ namespace MediaBrowser.MediaEncoding.Probing reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -308,7 +308,7 @@ namespace MediaBrowser.MediaEncoding.Probing reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -397,7 +397,7 @@ namespace MediaBrowser.MediaEncoding.Probing reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs index db5a1b18c1..36371e3010 100644 --- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs @@ -266,7 +266,7 @@ namespace MediaBrowser.Providers.Music reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -303,7 +303,7 @@ namespace MediaBrowser.Providers.Music reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -352,7 +352,7 @@ namespace MediaBrowser.Providers.Music // http://stackoverflow.com/questions/2299632/why-does-xmlreader-skip-every-other-element-if-there-is-no-whitespace-separator // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -427,7 +427,7 @@ namespace MediaBrowser.Providers.Music reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -464,7 +464,7 @@ namespace MediaBrowser.Providers.Music reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs index 031207c332..c50de10658 100644 --- a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs +++ b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs @@ -89,7 +89,7 @@ namespace MediaBrowser.Providers.Music reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -128,7 +128,7 @@ namespace MediaBrowser.Providers.Music reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -174,7 +174,7 @@ namespace MediaBrowser.Providers.Music // http://stackoverflow.com/questions/2299632/why-does-xmlreader-skip-every-other-element-if-there-is-no-whitespace-separator // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs index 9335fca9f3..dc24e3484f 100644 --- a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs +++ b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs @@ -117,7 +117,7 @@ namespace MediaBrowser.Providers.People reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -170,7 +170,7 @@ namespace MediaBrowser.Providers.People reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index 873834bf66..05ca7c7d9a 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -524,7 +524,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs index 5bbcc9d157..791f56beb7 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs @@ -86,7 +86,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs index ecc0f6cee6..99136cd858 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs @@ -343,7 +343,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -398,7 +398,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -452,7 +452,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -825,7 +825,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs index ab40cdff5e..8488c56694 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs @@ -198,7 +198,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -274,7 +274,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs index 9454277dfc..9951a2519c 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs @@ -129,7 +129,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -204,7 +204,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs index 5ad96300db..6d4be31aca 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs @@ -116,7 +116,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -190,7 +190,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs index 41f19a5b50..112b17f4e2 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs @@ -306,7 +306,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -342,7 +342,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -549,7 +549,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -607,7 +607,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -789,7 +789,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -849,7 +849,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -934,7 +934,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -978,7 +978,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1056,7 +1056,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -1315,7 +1315,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1366,7 +1366,7 @@ namespace MediaBrowser.Providers.TV reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 5484033470..4bee8c3ca9 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -123,7 +123,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -203,7 +203,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { cancellationToken.ThrowIfCancellationRequested(); @@ -607,7 +607,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers case "director": { - foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.Director })) + var val = reader.ReadElementContentAsString(); + foreach (var p in SplitNames(val).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.Director })) { if (string.IsNullOrWhiteSpace(p.Name)) { @@ -640,7 +641,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers case "writer": { - foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.Writer })) + var val = reader.ReadElementContentAsString(); + foreach (var p in SplitNames(val).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.Writer })) { if (string.IsNullOrWhiteSpace(p.Name)) { @@ -957,7 +959,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -996,7 +998,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1029,7 +1031,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1062,7 +1064,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -1128,7 +1130,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 125ac5291d..18936df013 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -1066,7 +1066,7 @@ namespace MediaBrowser.XbmcMetadata.Savers reader.Read(); // Loop through each element - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) {