diff --git a/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs b/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs index ce54651166..288e03fcff 100644 --- a/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs +++ b/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs @@ -58,7 +58,7 @@ namespace Jellyfin.Api.WebSocketListeners private void OnEntryCreated(object? sender, GenericEventArgs e) { - SendData(true); + SendData(true).GetAwaiter().GetResult(); } } } diff --git a/Jellyfin.Server/CoreAppHost.cs b/Jellyfin.Server/CoreAppHost.cs index 78f596a5c9..4b44537a59 100644 --- a/Jellyfin.Server/CoreAppHost.cs +++ b/Jellyfin.Server/CoreAppHost.cs @@ -82,10 +82,11 @@ namespace Jellyfin.Server ServiceCollection.AddSingleton(); ServiceCollection.AddSingleton(); - ServiceCollection.AddScoped(); ServiceCollection.AddScoped(); ServiceCollection.AddScoped(); ServiceCollection.AddScoped(); + // This one has to be last as DI will select it for parameterization. + ServiceCollection.AddScoped(); // TODO fix circular dependency on IWebSocketManager ServiceCollection.AddScoped(serviceProvider => new Lazy>(serviceProvider.GetRequiredService>)); diff --git a/Jellyfin.Server/Middleware/WebSocketHandlerMiddleware.cs b/Jellyfin.Server/Middleware/WebSocketHandlerMiddleware.cs index b7a5d2b346..53f32bebd1 100644 --- a/Jellyfin.Server/Middleware/WebSocketHandlerMiddleware.cs +++ b/Jellyfin.Server/Middleware/WebSocketHandlerMiddleware.cs @@ -25,8 +25,19 @@ namespace Jellyfin.Server.Middleware /// /// The current HTTP context. /// The WebSocket connection manager. + /// Session manager instance. /// The async task. - public async Task Invoke(HttpContext httpContext, IWebSocketManager webSocketManager) + public async Task Invoke( + HttpContext httpContext, + IWebSocketManager webSocketManager, +#pragma warning disable CA1801 +#pragma warning disable IDE0060 + // TODO: Workaround. see https://github.com/jellyfin/jellyfin/pull/3194 + // Do not remove this parameter. It uses DI to create a SessionWebSocketListener which is + // required for webSocketManager events. + IWebSocketListener websocketListener) +#pragma warning restore IDE0060 // Remove unused parameter +#pragma warning restore CA1801 { if (!httpContext.WebSockets.IsWebSocketRequest) {