Skip to content

Commit eda0a74

Browse files
authored
[dotnet] [bidi] Properly return shared buffer when disposing websocket (SeleniumHQ#16804)
1 parent 5dd7569 commit eda0a74

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

dotnet/src/webdriver/BiDi/WebSocketTransport.cs

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@
2828

2929
namespace OpenQA.Selenium.BiDi;
3030

31-
class WebSocketTransport(Uri _uri) : ITransport, IDisposable
31+
sealed class WebSocketTransport(Uri _uri) : ITransport, IDisposable
3232
{
3333
private readonly static ILogger _logger = Internal.Logging.Log.GetLogger<WebSocketTransport>();
3434

3535
private readonly ClientWebSocket _webSocket = new();
36-
private readonly byte[] _receiveBuffer = ArrayPool<byte>.Shared.Rent(1024 * 8);
36+
private byte[] _receiveBuffer = ArrayPool<byte>.Shared.Rent(1024 * 8);
3737

3838
private readonly SemaphoreSlim _socketSendSemaphoreSlim = new(1, 1);
3939
private readonly MemoryStream _sharedMemoryStream = new();
@@ -92,28 +92,36 @@ public async Task SendAsync(byte[] data, CancellationToken cancellationToken)
9292

9393
public void Dispose()
9494
{
95-
if (_disposed)
96-
{
97-
return;
98-
}
99-
100-
_webSocket.Dispose();
101-
_sharedMemoryStream.Dispose();
102-
_socketSendSemaphoreSlim.Dispose();
103-
ReleaseBuffer();
104-
_disposed = true;
95+
Dispose(true);
96+
GC.SuppressFinalize(this);
10597
}
10698

10799
~WebSocketTransport()
108100
{
109-
ReleaseBuffer();
101+
Dispose(false);
110102
}
111103

112-
private void ReleaseBuffer()
104+
private void Dispose(bool disposing)
113105
{
106+
if (_disposed)
107+
{
108+
return;
109+
}
110+
111+
if (disposing)
112+
{
113+
_webSocket.Dispose();
114+
_sharedMemoryStream.Dispose();
115+
_socketSendSemaphoreSlim.Dispose();
116+
}
117+
114118
if (_receiveBuffer is not null)
115119
{
116120
ArrayPool<byte>.Shared.Return(_receiveBuffer);
121+
122+
_receiveBuffer = null!;
117123
}
124+
125+
_disposed = true;
118126
}
119127
}

0 commit comments

Comments
 (0)