@@ -53,24 +53,40 @@ public Stream CreateStream(EndPoint endPoint, CancellationToken cancellationToke
53
53
var targetEndpoint = useProxy ? new DnsEndPoint ( socks5ProxySettings . Host , socks5ProxySettings . Port ) : endPoint ;
54
54
55
55
#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
60
60
{
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 ;
62
70
}
71
+ catch
72
+ {
73
+ socket ? . Dispose ( ) ;
74
+ stream ? . Dispose ( ) ;
63
75
64
- return stream ;
76
+ throw ;
77
+ }
65
78
#else
66
79
var resolved = ResolveEndPoints ( targetEndpoint ) ;
67
- for ( int i = 0 ; i < resolved . Length ; i ++ )
80
+ for ( var i = 0 ; i < resolved . Length ; i ++ )
68
81
{
82
+ Socket socket = null ;
83
+ NetworkStream stream = null ;
84
+
69
85
try
70
86
{
71
- var socket = CreateSocket ( resolved [ i ] ) ;
87
+ socket = CreateSocket ( resolved [ i ] ) ;
72
88
Connect ( socket , resolved [ i ] , cancellationToken ) ;
73
- var stream = CreateNetworkStream ( socket ) ;
89
+ stream = CreateNetworkStream ( socket ) ;
74
90
75
91
if ( useProxy )
76
92
{
@@ -81,6 +97,9 @@ public Stream CreateStream(EndPoint endPoint, CancellationToken cancellationToke
81
97
}
82
98
catch
83
99
{
100
+ socket ? . Dispose ( ) ;
101
+ stream ? . Dispose ( ) ;
102
+
84
103
// if we have tried all of them and still failed,
85
104
// then blow up.
86
105
if ( i == resolved . Length - 1 )
0 commit comments