Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Unified Diff: sdk/lib/io/secure_socket.dart

Issue 14083007: Add new InternetAddress class with a static lookup function (including IPv6 results). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add Windows support and update ssl tests to use 'localhost'. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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");

Powered by Google App Engine
This is Rietveld 408576698