tls_wrap: ensure that TLSCallbacks are gc-able
authorFedor Indutny <fedor@indutny.com>
Tue, 23 Sep 2014 09:49:42 +0000 (13:49 +0400)
committerFedor Indutny <fedor@indutny.com>
Wed, 24 Sep 2014 10:02:40 +0000 (14:02 +0400)
Call `MakeWeak()` to destruct TLSCallbacks when the js-object dies.

fix #8416

Reviewed-By: Fedor Indutny <fedor@indutny.com>
src/tls_wrap.cc
src/tls_wrap.h

index 8e70b88..c65492c 100644 (file)
@@ -79,6 +79,7 @@ TLSCallbacks::TLSCallbacks(Environment* env,
       cycle_depth_(0),
       eof_(false) {
   node::Wrap<TLSCallbacks>(object(), this);
+  MakeWeak(this);
 
   // Initialize queue for clearIn writes
   QUEUE_INIT(&write_item_queue_);
index 13a53bf..34ae3cc 100644 (file)
@@ -46,6 +46,8 @@ class TLSCallbacks : public crypto::SSLWrap<TLSCallbacks>,
                      public StreamWrapCallbacks,
                      public AsyncWrap {
  public:
+  ~TLSCallbacks();
+
   static void Initialize(v8::Handle<v8::Object> target,
                          v8::Handle<v8::Value> unused,
                          v8::Handle<v8::Context> context);
@@ -94,7 +96,6 @@ class TLSCallbacks : public crypto::SSLWrap<TLSCallbacks>,
                Kind kind,
                v8::Handle<v8::Object> sc,
                StreamWrapCallbacks* old);
-  ~TLSCallbacks();
 
   static void SSLInfoCallback(const SSL* ssl_, int where, int ret);
   void InitSSL();