Moved IAsyncDisposable and IDisposable from WebSocketConnection to it's interface. Added private variable and guard statement to avoid disposing of WebSocketConnection unnecessarily.

This commit is contained in:
Luke Brown 2022-05-18 21:04:22 -05:00
parent 8d0024ec49
commit abfbd04782
2 changed files with 12 additions and 6 deletions

View File

@ -19,7 +19,7 @@ namespace Emby.Server.Implementations.HttpServer
/// <summary> /// <summary>
/// Class WebSocketConnection. /// Class WebSocketConnection.
/// </summary> /// </summary>
public class WebSocketConnection : IWebSocketConnection, IAsyncDisposable, IDisposable public class WebSocketConnection : IWebSocketConnection
{ {
/// <summary> /// <summary>
/// The logger. /// The logger.
@ -36,6 +36,8 @@ namespace Emby.Server.Implementations.HttpServer
/// </summary> /// </summary>
private readonly WebSocket _socket; private readonly WebSocket _socket;
private bool _disposed = false;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="WebSocketConnection" /> class. /// Initializes a new instance of the <see cref="WebSocketConnection" /> class.
/// </summary> /// </summary>
@ -244,10 +246,17 @@ namespace Emby.Server.Implementations.HttpServer
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
protected virtual void Dispose(bool dispose) protected virtual void Dispose(bool dispose)
{ {
if (_disposed)
{
return;
}
if (dispose) if (dispose)
{ {
_socket.Dispose(); _socket.Dispose();
} }
_disposed = true;
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@ -99,6 +99,7 @@ namespace Emby.Server.Implementations.Session
foreach (var socket in _sockets) foreach (var socket in _sockets)
{ {
socket.Closed -= OnConnectionClosed; socket.Closed -= OnConnectionClosed;
socket.Dispose();
} }
_disposed = true; _disposed = true;
@ -114,11 +115,7 @@ namespace Emby.Server.Implementations.Session
foreach (var socket in _sockets) foreach (var socket in _sockets)
{ {
socket.Closed -= OnConnectionClosed; socket.Closed -= OnConnectionClosed;
await socket.DisposeAsync().ConfigureAwait(false);
if (socket is IAsyncDisposable disposableAsync)
{
await disposableAsync.DisposeAsync().ConfigureAwait(false);
}
} }
_disposed = true; _disposed = true;