aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs')
-rw-r--r--MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs39
1 files changed, 7 insertions, 32 deletions
diff --git a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs
index 219da309e..a47d2fa45 100644
--- a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs
+++ b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs
@@ -33,7 +33,7 @@ namespace MediaBrowser.Controller.Net
SingleWriter = false
});
- private readonly SemaphoreSlim _lock = new(1, 1);
+ private readonly object _activeConnectionsLock = new();
/// <summary>
/// The _active connections.
@@ -126,15 +126,10 @@ namespace MediaBrowser.Controller.Net
InitialDelayMs = dueTimeMs
};
- _lock.Wait();
- try
+ lock (_activeConnectionsLock)
{
_activeConnections.Add((message.Connection, cancellationTokenSource, state));
}
- finally
- {
- _lock.Release();
- }
}
protected void SendData(bool force)
@@ -153,8 +148,7 @@ namespace MediaBrowser.Controller.Net
(IWebSocketConnection Connection, CancellationTokenSource CancellationTokenSource, TStateType State)[] tuples;
var now = DateTime.UtcNow;
- await _lock.WaitAsync().ConfigureAwait(false);
- try
+ lock (_activeConnectionsLock)
{
if (_activeConnections.Count == 0)
{
@@ -174,10 +168,6 @@ namespace MediaBrowser.Controller.Net
})
.ToArray();
}
- finally
- {
- _lock.Release();
- }
if (tuples.Length == 0)
{
@@ -240,8 +230,7 @@ namespace MediaBrowser.Controller.Net
/// <param name="message">The message.</param>
private void Stop(WebSocketMessageInfo message)
{
- _lock.Wait();
- try
+ lock (_activeConnectionsLock)
{
var connection = _activeConnections.FirstOrDefault(c => c.Connection == message.Connection);
@@ -250,10 +239,6 @@ namespace MediaBrowser.Controller.Net
DisposeConnection(connection);
}
}
- finally
- {
- _lock.Release();
- }
}
/// <summary>
@@ -283,15 +268,10 @@ namespace MediaBrowser.Controller.Net
Logger.LogError(ex, "Error disposing websocket");
}
- _lock.Wait();
- try
+ lock (_activeConnectionsLock)
{
_activeConnections.Remove(connection);
}
- finally
- {
- _lock.Release();
- }
}
protected virtual async ValueTask DisposeAsyncCore()
@@ -306,18 +286,13 @@ namespace MediaBrowser.Controller.Net
Logger.LogError(ex, "Disposing the message consumer failed");
}
- await _lock.WaitAsync().ConfigureAwait(false);
- try
+ lock (_activeConnectionsLock)
{
- foreach (var connection in _activeConnections.ToArray())
+ foreach (var connection in _activeConnections.ToList())
{
DisposeConnection(connection);
}
}
- finally
- {
- _lock.Release();
- }
}
/// <inheritdoc />