tls_wrap: invoke queued callbacks in DestroySSL
authorFedor Indutny <fedor@indutny.com>
Tue, 19 May 2015 11:18:42 +0000 (13:18 +0200)
committerFedor Indutny <fedor@indutny.com>
Thu, 4 Jun 2015 21:38:30 +0000 (23:38 +0200)
PR-URL: https://github.com/nodejs/io.js/pull/1702
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
src/tls_wrap.cc

index ca0690d..b8a648d 100644 (file)
@@ -86,12 +86,6 @@ TLSWrap::~TLSWrap() {
   sni_context_.Reset();
 #endif  // SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
 
-  // Move all writes to pending
-  MakePending();
-
-  // And destroy
-  InvokeQueued(UV_ECANCELED);
-
   ClearError();
 }
 
@@ -770,7 +764,16 @@ void TLSWrap::EnableSessionCallbacks(
 
 void TLSWrap::DestroySSL(const FunctionCallbackInfo<Value>& args) {
   TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder());
+
+  // Move all writes to pending
+  wrap->MakePending();
+
+  // And destroy
+  wrap->InvokeQueued(UV_ECANCELED);
+
+  // Destroy the SSL structure and friends
   wrap->SSLWrap<TLSWrap>::DestroySSL();
+
   delete wrap->clear_in_;
   wrap->clear_in_ = nullptr;
 }