| Index: sdk/lib/io/secure_socket.dart
|
| diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart
|
| index 17eb384021d326c3377082a3f1248bbdb901f39a..db82ea4d7b6137bc32ec15c47b7795ae5a2ae50a 100644
|
| --- a/sdk/lib/io/secure_socket.dart
|
| +++ b/sdk/lib/io/secure_socket.dart
|
| @@ -35,7 +35,7 @@ abstract class SecureSocket implements Socket {
|
| * to continue the [SecureSocket] connection.
|
| */
|
| static Future<SecureSocket> connect(
|
| - String host,
|
| + host,
|
| int port,
|
| {bool sendClientCertificate: false,
|
| String certificateName,
|
| @@ -208,7 +208,7 @@ abstract class RawSecureSocket implements RawSocket {
|
| * to continue the [RawSecureSocket] connection.
|
| */
|
| static Future<RawSecureSocket> connect(
|
| - String host,
|
| + host,
|
| int port,
|
| {bool sendClientCertificate: false,
|
| String certificateName,
|
| @@ -244,7 +244,7 @@ abstract class RawSecureSocket implements RawSocket {
|
| String certificateName,
|
| bool onBadCertificate(X509Certificate certificate)}) {
|
| return _RawSecureSocket.connect(
|
| - socket.host,
|
| + socket.address,
|
| socket.port,
|
| certificateName,
|
| is_server: false,
|
| @@ -345,7 +345,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| StreamSubscription<RawSocketEvent> _socketSubscription;
|
| List<int> _carryOverData;
|
| int _carryOverDataIndex = 0;
|
| - final String host;
|
| + final InternetAddress address;
|
| final bool is_server;
|
| final String certificateName;
|
| final bool requestClientCertificate;
|
| @@ -366,7 +366,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| _SecureFilter _secureFilter = new _SecureFilter();
|
|
|
| static Future<_RawSecureSocket> connect(
|
| - String host,
|
| + host,
|
| int requestedPort,
|
| String certificateName,
|
| {bool is_server,
|
| @@ -376,8 +376,15 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| bool requestClientCertificate: false,
|
| bool requireClientCertificate: false,
|
| bool sendClientCertificate: false,
|
| - bool onBadCertificate(X509Certificate certificate)}){
|
| - return new _RawSecureSocket(host,
|
| + bool onBadCertificate(X509Certificate certificate)}) {
|
| + var future;
|
| + if (host is String) {
|
| + future = InternetAddress.lookup(host).then((addrs) => addrs.first);
|
| + } else {
|
| + future = new Future.value(host);
|
| + }
|
| + return future.then((addr) {
|
| + return new _RawSecureSocket(addr,
|
| requestedPort,
|
| certificateName,
|
| is_server,
|
| @@ -389,10 +396,11 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| sendClientCertificate,
|
| onBadCertificate)
|
| ._handshakeComplete.future;
|
| + });
|
| }
|
|
|
| _RawSecureSocket(
|
| - String this.host,
|
| + InternetAddress this.address,
|
| int requestedPort,
|
| String this.certificateName,
|
| bool this.is_server,
|
| @@ -421,7 +429,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| }
|
| var futureSocket;
|
| if (socket == null) {
|
| - futureSocket = RawSocket.connect(host, requestedPort);
|
| + futureSocket = RawSocket.connect(address, requestedPort);
|
| } else {
|
| futureSocket = new Future.value(socket);
|
| }
|
| @@ -441,7 +449,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| _socketSubscription.onDone(_doneHandler);
|
| }
|
| _connectPending = true;
|
| - _secureFilter.connect(host,
|
| + _secureFilter.connect(rawSocket.address.host,
|
| port,
|
| is_server,
|
| certificateName,
|
| @@ -475,9 +483,9 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| void _verifyFields() {
|
| assert(is_server is bool);
|
| assert(_socket == null || _socket is RawSocket);
|
| - if (host is! String) {
|
| + if (address is! InternetAddress) {
|
| throw new ArgumentError(
|
| - "RawSecureSocket constructor: host is not a String");
|
| + "RawSecureSocket constructor: host is not an InternetAddress");
|
| }
|
| if (certificateName != null && certificateName is! String) {
|
| throw new ArgumentError("certificateName is not null or a String");
|
|
|