| Index: runtime/bin/secure_socket.cc
|
| ===================================================================
|
| --- runtime/bin/secure_socket.cc (revision 23307)
|
| +++ runtime/bin/secure_socket.cc (working copy)
|
| @@ -272,10 +272,15 @@
|
| if (!library_initialized_) {
|
| InitializeLibrary(NULL, "", true, false);
|
| }
|
| - string_start_ = ThrowIfError(
|
| - Dart_NewPersistentHandle(DartUtils::NewString("start")));
|
| - string_length_ = ThrowIfError(
|
| - Dart_NewPersistentHandle(DartUtils::NewString("length")));
|
| + ASSERT(string_start_ == NULL);
|
| + string_start_ = Dart_NewPersistentHandle(DartUtils::NewString("start"));
|
| + ASSERT(string_start_ != NULL);
|
| + ASSERT(string_length_ == NULL);
|
| + string_length_ = Dart_NewPersistentHandle(DartUtils::NewString("length"));
|
| + ASSERT(string_length_ != NULL);
|
| + ASSERT(bad_certificate_callback_ == NULL);
|
| + bad_certificate_callback_ = Dart_NewPersistentHandle(Dart_Null());
|
| + ASSERT(bad_certificate_callback_ != NULL);
|
|
|
| InitializeBuffers(dart_this);
|
| filter_ = memio_CreateIOLayer(kMemioBufferSize);
|
| @@ -313,29 +318,32 @@
|
| Dart_Handle data_identifier = DartUtils::NewString("data");
|
| for (int i = 0; i < kNumBuffers; ++i) {
|
| int size = isEncrypted(i) ? encrypted_buffer_size_ : buffer_size_;
|
| - dart_buffer_objects_[i] = ThrowIfError(
|
| - Dart_NewPersistentHandle(Dart_ListGetAt(dart_buffers_object, i)));
|
| + dart_buffer_objects_[i] =
|
| + Dart_NewPersistentHandle(Dart_ListGetAt(dart_buffers_object, i));
|
| + ASSERT(dart_buffer_objects_[i] != NULL);
|
| buffers_[i] = new uint8_t[size];
|
| Dart_Handle data = ThrowIfError(
|
| - Dart_NewExternalTypedData(kUint8, buffers_[i], size, NULL, NULL));
|
| - ThrowIfError(Dart_SetField(dart_buffer_objects_[i],
|
| - data_identifier,
|
| - data));
|
| + Dart_NewExternalTypedData(kUint8, buffers_[i], size));
|
| + ThrowIfError(
|
| + Dart_SetField(Dart_HandleFromPersistent(dart_buffer_objects_[i]),
|
| + data_identifier,
|
| + data));
|
| }
|
| }
|
|
|
|
|
| void SSLFilter::RegisterHandshakeCompleteCallback(Dart_Handle complete) {
|
| ASSERT(NULL == handshake_complete_);
|
| - handshake_complete_ = ThrowIfError(Dart_NewPersistentHandle(complete));
|
| + handshake_complete_ = Dart_NewPersistentHandle(complete);
|
| + ASSERT(handshake_complete_ != NULL);
|
| }
|
|
|
|
|
| void SSLFilter::RegisterBadCertificateCallback(Dart_Handle callback) {
|
| - if (NULL != bad_certificate_callback_) {
|
| - Dart_DeletePersistentHandle(bad_certificate_callback_);
|
| - }
|
| - bad_certificate_callback_ = ThrowIfError(Dart_NewPersistentHandle(callback));
|
| + ASSERT(bad_certificate_callback_ != NULL);
|
| + Dart_DeletePersistentHandle(bad_certificate_callback_);
|
| + bad_certificate_callback_ = Dart_NewPersistentHandle(callback);
|
| + ASSERT(bad_certificate_callback_ != NULL);
|
| }
|
|
|
| static const char* builtin_roots_module =
|
| @@ -427,7 +435,7 @@
|
| SECStatus BadCertificateCallback(void* filter, PRFileDesc* fd) {
|
| SSLFilter* ssl_filter = static_cast<SSLFilter*>(filter);
|
| Dart_Handle callback = ssl_filter->bad_certificate_callback();
|
| - if (callback == NULL || Dart_IsNull(callback)) return SECFailure;
|
| + if (Dart_IsNull(callback)) return SECFailure;
|
|
|
| Dart_EnterScope();
|
| Dart_Handle x509_object = ssl_filter->PeerCertificate();
|
| @@ -582,7 +590,8 @@
|
| SECStatus status = SSL_ForceHandshake(filter_);
|
| if (status == SECSuccess) {
|
| if (in_handshake_) {
|
| - ThrowIfError(Dart_InvokeClosure(handshake_complete_, 0, NULL));
|
| + ThrowIfError(Dart_InvokeClosure(
|
| + Dart_HandleFromPersistent(handshake_complete_), 0, NULL));
|
| in_handshake_ = false;
|
| }
|
| } else {
|
| @@ -610,9 +619,7 @@
|
| Dart_DeletePersistentHandle(string_start_);
|
| Dart_DeletePersistentHandle(string_length_);
|
| Dart_DeletePersistentHandle(handshake_complete_);
|
| - if (bad_certificate_callback_ != NULL) {
|
| - Dart_DeletePersistentHandle(bad_certificate_callback_);
|
| - }
|
| + Dart_DeletePersistentHandle(bad_certificate_callback_);
|
| free(client_certificate_name_);
|
|
|
| PR_Close(filter_);
|
| @@ -621,11 +628,12 @@
|
|
|
| intptr_t SSLFilter::ProcessBuffer(int buffer_index) {
|
| int size = isEncrypted(buffer_index) ? encrypted_buffer_size_ : buffer_size_;
|
| - Dart_Handle buffer_object = dart_buffer_objects_[buffer_index];
|
| + Dart_Handle buffer_object =
|
| + Dart_HandleFromPersistent(dart_buffer_objects_[buffer_index]);
|
| Dart_Handle start_object = ThrowIfError(
|
| - Dart_GetField(buffer_object, string_start_));
|
| + Dart_GetField(buffer_object, Dart_HandleFromPersistent(string_start_)));
|
| Dart_Handle length_object = ThrowIfError(
|
| - Dart_GetField(buffer_object, string_length_));
|
| + Dart_GetField(buffer_object, Dart_HandleFromPersistent(string_length_)));
|
| int64_t unsafe_start = DartUtils::GetIntegerValue(start_object);
|
| int64_t unsafe_length = DartUtils::GetIntegerValue(length_object);
|
| ASSERT(unsafe_start >= 0);
|
|
|