@@ -20,20 +20,22 @@ public partial class PooledSocket : IDisposable
20
20
21
21
private bool _isAlive ;
22
22
private bool _useSslStream ;
23
+ private bool _useIPv6 ;
23
24
private Socket _socket ;
24
25
private readonly EndPoint _endpoint ;
25
26
private readonly int _connectionTimeout ;
26
27
27
28
private NetworkStream _inputStream ;
28
29
private SslStream _sslStream ;
29
30
30
- public PooledSocket ( EndPoint endpoint , TimeSpan connectionTimeout , TimeSpan receiveTimeout , ILogger logger , bool useSslStream )
31
+ public PooledSocket ( EndPoint endpoint , TimeSpan connectionTimeout , TimeSpan receiveTimeout , ILogger logger , bool useSslStream , bool useIPv6 )
31
32
{
32
33
_logger = logger ;
33
34
_isAlive = true ;
34
35
_useSslStream = useSslStream ;
36
+ _useIPv6 = useIPv6 ;
35
37
36
- var socket = new Socket ( AddressFamily . InterNetwork , SocketType . Stream , ProtocolType . Tcp ) ;
38
+ var socket = new Socket ( useIPv6 ? AddressFamily . InterNetworkV6 : AddressFamily . InterNetwork , SocketType . Stream , ProtocolType . Tcp ) ;
37
39
socket . SetSocketOption ( SocketOptionLevel . Socket , SocketOptionName . KeepAlive , true ) ;
38
40
socket . NoDelay = true ;
39
41
@@ -540,10 +542,10 @@ private IPEndPoint GetIPEndPoint(EndPoint endpoint)
540
542
{
541
543
var dnsEndPoint = ( DnsEndPoint ) endpoint ;
542
544
var address = Dns . GetHostAddresses ( dnsEndPoint . Host ) . FirstOrDefault ( ip =>
543
- ip . AddressFamily == AddressFamily . InterNetwork ) ;
544
- if ( address == null )
545
- throw new ArgumentException ( String . Format ( "Could not resolve host '{0}'." , endpoint ) ) ;
546
- return new IPEndPoint ( address , dnsEndPoint . Port ) ;
545
+ ip . AddressFamily == ( _useIPv6 ? AddressFamily . InterNetworkV6 : AddressFamily . InterNetwork ) ) ;
546
+ return address == null
547
+ ? throw new ArgumentException ( string . Format ( "Could not resolve host '{0}'." , endpoint ) )
548
+ : new IPEndPoint ( address , dnsEndPoint . Port ) ;
547
549
}
548
550
else if ( endpoint is IPEndPoint )
549
551
{
0 commit comments