Chromium Code Reviews| Index: sdk/lib/io/secure_socket.dart |
| diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart |
| index 24516cdead15478c505f278952d9e833d35d92f3..e8c1c148c3b95773064fc8ee686a70cc8c3c91bc 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, |
| @@ -129,7 +129,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, |
| @@ -165,7 +165,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, |
| @@ -266,7 +266,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; |
| @@ -287,7 +287,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
| _SecureFilter _secureFilter = new _SecureFilter(); |
| static Future<_RawSecureSocket> connect( |
| - String host, |
| + host, |
| int requestedPort, |
| String certificateName, |
| {bool is_server, |
| @@ -297,8 +297,13 @@ 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)}) { |
|
Søren Gjesse
2013/04/22 15:02:08
Move this new Future to an else block?
Anders Johnsen
2013/04/23 08:03:57
Done.
|
| + var future = new Future.value(host); |
| + if (host is String) { |
| + future = InternetAddress.lookup(host).then((addrs) => addrs.first); |
| + } |
| + return future.then((addr) { |
| + return new _RawSecureSocket(addr, |
| requestedPort, |
| certificateName, |
| is_server, |
| @@ -310,10 +315,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, |
| @@ -342,7 +348,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); |
| } |
| @@ -361,7 +367,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
| _socketSubscription.onDone(_doneHandler); |
| } |
| _connectPending = true; |
| - _secureFilter.connect(host, |
| + _secureFilter.connect(rawSocket.address.host, |
| port, |
| is_server, |
| certificateName, |
| @@ -395,9 +401,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"); |