aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs5
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Session/WebSocketController.cs10
4 files changed, 28 insertions, 1 deletions
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index c469d97d6..9f8826184 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -134,6 +134,12 @@ namespace MediaBrowser.Model.Dto
public string CustomRating { get; set; }
/// <summary>
+ /// Gets or sets the channel identifier.
+ /// </summary>
+ /// <value>The channel identifier.</value>
+ public string ChannelId { get; set; }
+
+ /// <summary>
/// Gets or sets the overview.
/// </summary>
/// <value>The overview.</value>
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index b3984bb6c..cfa642add 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -385,6 +385,11 @@ namespace MediaBrowser.Server.Implementations.Channels
private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, string internalChannnelId, CancellationToken cancellationToken)
{
+ if (string.IsNullOrEmpty(internalChannnelId))
+ {
+ throw new ArgumentNullException("internalChannnelId");
+ }
+
BaseItem item;
Guid id;
var isNew = false;
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index bf77f1869..ceb39da03 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
+using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
@@ -1140,6 +1141,13 @@ namespace MediaBrowser.Server.Implementations.Dto
{
dto.MediaSources = GetMediaSources(tvChannel);
}
+
+ var channelItem = item as IChannelItem;
+
+ if (channelItem != null)
+ {
+ dto.ChannelId = channelItem.ChannelId;
+ }
}
public List<MediaSourceInfo> GetMediaSources(BaseItem item)
diff --git a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs
index 6f4dd0a72..05eef611f 100644
--- a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs
+++ b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs
@@ -14,7 +14,7 @@ using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Session
{
- public class WebSocketController : ISessionController
+ public class WebSocketController : ISessionController, IDisposable
{
public SessionInfo Session { get; private set; }
public IReadOnlyList<IWebSocketConnection> Sockets { get; private set; }
@@ -244,5 +244,13 @@ namespace MediaBrowser.Server.Implementations.Session
return Task.WhenAll(tasks);
}
+
+ public void Dispose()
+ {
+ foreach (var socket in Sockets.ToList())
+ {
+ socket.Closed -= connection_Closed;
+ }
+ }
}
}