ソースを参照

catch when negative playback position is reported

Luke Pulverenti 12 年 前
コミット
aec36e8096

+ 12 - 3
MediaBrowser.Server.Implementations/Session/SessionManager.cs

@@ -255,14 +255,13 @@ namespace MediaBrowser.Server.Implementations.Session
         /// <summary>
         /// Used to report playback progress for an item
         /// </summary>
-        /// <param name="user">The user.</param>
         /// <param name="item">The item.</param>
         /// <param name="positionTicks">The position ticks.</param>
         /// <param name="isPaused">if set to <c>true</c> [is paused].</param>
         /// <param name="sessionId">The session id.</param>
         /// <returns>Task.</returns>
-        /// <exception cref="System.ArgumentNullException">
-        /// </exception>
+        /// <exception cref="System.ArgumentNullException"></exception>
+        /// <exception cref="System.ArgumentOutOfRangeException">positionTicks</exception>
         public async Task OnPlaybackProgress(BaseItem item, long? positionTicks, bool isPaused, Guid sessionId)
         {
             if (item == null)
@@ -270,6 +269,11 @@ namespace MediaBrowser.Server.Implementations.Session
                 throw new ArgumentNullException();
             }
 
+            if (positionTicks.HasValue && positionTicks.Value < 0)
+            {
+                throw new ArgumentOutOfRangeException("positionTicks");
+            }
+
             var session = Sessions.First(i => i.Id.Equals(sessionId));
 
             UpdateNowPlayingItem(session, item, isPaused, positionTicks);
@@ -310,6 +314,11 @@ namespace MediaBrowser.Server.Implementations.Session
                 throw new ArgumentNullException();
             }
 
+            if (positionTicks.HasValue && positionTicks.Value < 0)
+            {
+                throw new ArgumentOutOfRangeException("positionTicks");
+            }
+            
             var session = Sessions.First(i => i.Id.Equals(sessionId));
 
             RemoveNowPlayingItem(session, item);