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

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

Issue 262923002: Clean up secure socket connect. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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
« no previous file with comments | « no previous file | tests/standalone/io/raw_secure_server_socket_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/io/secure_socket.dart
diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart
index 903ecf8b0f6132200f3559dd8d51ff473c30a45f..680acb616bb6d908e9f3d4c3a62352fc1d966f3d 100644
--- a/sdk/lib/io/secure_socket.dart
+++ b/sdk/lib/io/secure_socket.dart
@@ -258,7 +258,6 @@ abstract class RawSecureSocket implements RawSocket {
return RawSocket.connect(host, port)
.then((socket) {
return secure(socket,
- host: host,
sendClientCertificate: sendClientCertificate,
certificateName: certificateName,
onBadCertificate: onBadCertificate);
@@ -303,7 +302,7 @@ abstract class RawSecureSocket implements RawSocket {
socket.readEventsEnabled = false;
socket.writeEventsEnabled = false;
return _RawSecureSocket.connect(
- host != null ? host : socket.address,
+ host != null ? host : socket.address.host,
socket.port,
certificateName,
is_server: false,
@@ -473,34 +472,24 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
bool requireClientCertificate: false,
bool sendClientCertificate: false,
bool onBadCertificate(X509Certificate certificate)}) {
- var future;
_verifyFields(host, requestedPort, certificateName, is_server,
requestClientCertificate, requireClientCertificate,
sendClientCertificate, onBadCertificate);
- if (host is String) {
- if (socket != null) {
- future = new Future.value(
- (socket.address as dynamic)._cloneWithNewHost(host));
- } else {
- 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,
- socket,
- subscription,
- bufferedData,
- requestClientCertificate,
- requireClientCertificate,
- sendClientCertificate,
- onBadCertificate)
- ._handshakeComplete.future;
- });
+ if (host is InternetAddress) host = host.host;
+ var address = socket.address;
+ if (host != null) address = address._cloneWithNewHost(host);
+ return new _RawSecureSocket(address,
+ requestedPort,
+ certificateName,
+ is_server,
+ socket,
+ subscription,
+ bufferedData,
+ requestClientCertificate,
+ requireClientCertificate,
+ sendClientCertificate,
+ onBadCertificate)
+ ._handshakeComplete.future;
}
_RawSecureSocket(
@@ -508,7 +497,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
int requestedPort,
this.certificateName,
this.is_server,
- RawSocket socket,
+ RawSocket this._socket,
this._socketSubscription,
this._bufferedData,
this.requestClientCertificate,
@@ -531,31 +520,26 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
if (onBadCertificate != null) {
_secureFilter.registerBadCertificateCallback(_onBadCertificateWrapper);
}
- var futureSocket;
- if (socket == null) {
- futureSocket = RawSocket.connect(address, requestedPort);
+ _socket.readEventsEnabled = true;
+ _socket.writeEventsEnabled = false;
+ if (_socketSubscription == null) {
+ // If a current subscription is provided use this otherwise
+ // create a new one.
+ _socketSubscription = _socket.listen(_eventDispatcher,
+ onError: _reportError,
+ onDone: _doneHandler);
} else {
- futureSocket = new Future.value(socket);
- }
- futureSocket.then((rawSocket) {
- _socket = rawSocket;
- _socket.readEventsEnabled = true;
- _socket.writeEventsEnabled = false;
- if (_socketSubscription == null) {
- // If a current subscription is provided use this otherwise
- // create a new one.
- _socketSubscription = _socket.listen(_eventDispatcher,
- onError: _reportError,
- onDone: _doneHandler);
- } else {
- if (_socketSubscription.isPaused) {
- throw new StateError("Subscription passed to TLS upgrade is paused");
- }
- _socketSubscription
- ..onData(_eventDispatcher)
- ..onError(_reportError)
- ..onDone(_doneHandler);
+ if (_socketSubscription.isPaused) {
+ _socket.close();
+ throw new ArgumentError(
+ "Subscription passed to TLS upgrade is paused");
}
+ _socketSubscription
+ ..onData(_eventDispatcher)
+ ..onError(_reportError)
+ ..onDone(_doneHandler);
+ }
+ try {
_secureFilter.connect(address.host,
(address as dynamic)._in_addr,
port,
@@ -566,8 +550,9 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
requireClientCertificate,
sendClientCertificate);
_secureHandshake();
- })
- .catchError(_reportError);
+ } catch (e, s) {
+ _reportError(e, s);
+ }
}
StreamSubscription listen(void onData(RawSocketEvent data),
« no previous file with comments | « no previous file | tests/standalone/io/raw_secure_server_socket_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698