@@ -20,20 +20,22 @@ public partial class PooledSocket : IDisposable
2020
2121 private bool _isAlive ;
2222 private bool _useSslStream ;
23+ private bool _useIPv6 ;
2324 private Socket _socket ;
2425 private readonly EndPoint _endpoint ;
2526 private readonly int _connectionTimeout ;
2627
2728 private NetworkStream _inputStream ;
2829 private SslStream _sslStream ;
2930
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 )
3132 {
3233 _logger = logger ;
3334 _isAlive = true ;
3435 _useSslStream = useSslStream ;
36+ _useIPv6 = useIPv6 ;
3537
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 ) ;
3739 socket . SetSocketOption ( SocketOptionLevel . Socket , SocketOptionName . KeepAlive , true ) ;
3840 socket . NoDelay = true ;
3941
@@ -540,10 +542,10 @@ private IPEndPoint GetIPEndPoint(EndPoint endpoint)
540542 {
541543 var dnsEndPoint = ( DnsEndPoint ) endpoint ;
542544 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 ) ;
547549 }
548550 else if ( endpoint is IPEndPoint )
549551 {
0 commit comments