| Index: sdk/lib/io/secure_socket.dart
|
| diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart
|
| index 6da8ec67348a4004e24d91cec986fce2a4eb6d30..874a234920dd661de6219d50316d0846203d4362 100644
|
| --- a/sdk/lib/io/secure_socket.dart
|
| +++ b/sdk/lib/io/secure_socket.dart
|
| @@ -516,7 +516,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| _secureFilter.registerHandshakeCompleteCallback(
|
| _secureHandshakeCompleteHandler);
|
| if (onBadCertificate != null) {
|
| - _secureFilter.registerBadCertificateCallback(onBadCertificate);
|
| + _secureFilter.registerBadCertificateCallback(_onBadCertificateWrapper);
|
| }
|
| var futureSocket;
|
| if (socket == null) {
|
| @@ -720,6 +720,14 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
|
|
| X509Certificate get peerCertificate => _secureFilter.peerCertificate;
|
|
|
| + bool _onBadCertificateWrapper(X509Certificate certificate) {
|
| + if (onBadCertificate == null) return false;
|
| + var result = onBadCertificate(certificate);
|
| + if (result is bool) return result;
|
| + throw new ArgumentError(
|
| + "onBadCertificate callback returned non-boolean $result");
|
| + }
|
| +
|
| bool setOption(SocketOption option, bool enabled) {
|
| if (_socket == null) return false;
|
| return _socket.setOption(option, enabled);
|
| @@ -761,9 +769,6 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
| } else if (_connectPending) {
|
| // _connectPending is true after the underlying connection has been
|
| // made, but before the handshake has completed.
|
| - if (e is! TlsException) {
|
| - e = new HandshakeException("$e", null);
|
| - }
|
| _handshakeComplete.completeError(e);
|
| } else {
|
| _controller.addError(e);
|
|
|