Skip to content

Commit 3f80519

Browse files
committed
Added disposal of stream and socket
1 parent f6163db commit 3f80519

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/MongoDB.Driver/Core/Connections/TcpStreamFactory.cs

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,24 +53,40 @@ public Stream CreateStream(EndPoint endPoint, CancellationToken cancellationToke
5353
var targetEndpoint = useProxy ? new DnsEndPoint(socks5ProxySettings.Host, socks5ProxySettings.Port) : endPoint;
5454

5555
#if NET472
56-
var socket = CreateSocket(targetEndpoint);
57-
Connect(socket, targetEndpoint, cancellationToken);
58-
var stream = CreateNetworkStream(socket);
59-
if (useProxy)
56+
Socket socket = null;
57+
NetworkStream stream = null;
58+
59+
try
6060
{
61-
Socks5Helper.PerformSocks5Handshake(stream, endPoint, socks5ProxySettings.Authentication, cancellationToken);
61+
socket = CreateSocket(targetEndpoint);
62+
Connect(socket, targetEndpoint, cancellationToken);
63+
stream = CreateNetworkStream(socket);
64+
if (useProxy)
65+
{
66+
Socks5Helper.PerformSocks5Handshake(stream, endPoint, socks5ProxySettings.Authentication, cancellationToken);
67+
}
68+
69+
return stream;
6270
}
71+
catch
72+
{
73+
socket?.Dispose();
74+
stream?.Dispose();
6375

64-
return stream;
76+
throw;
77+
}
6578
#else
6679
var resolved = ResolveEndPoints(targetEndpoint);
67-
for (int i = 0; i < resolved.Length; i++)
80+
for (var i = 0; i < resolved.Length; i++)
6881
{
82+
Socket socket = null;
83+
NetworkStream stream = null;
84+
6985
try
7086
{
71-
var socket = CreateSocket(resolved[i]);
87+
socket = CreateSocket(resolved[i]);
7288
Connect(socket, resolved[i], cancellationToken);
73-
var stream = CreateNetworkStream(socket);
89+
stream = CreateNetworkStream(socket);
7490

7591
if (useProxy)
7692
{
@@ -81,6 +97,9 @@ public Stream CreateStream(EndPoint endPoint, CancellationToken cancellationToke
8197
}
8298
catch
8399
{
100+
socket?.Dispose();
101+
stream?.Dispose();
102+
84103
// if we have tried all of them and still failed,
85104
// then blow up.
86105
if (i == resolved.Length - 1)

0 commit comments

Comments
 (0)