Browse Source

tls_wrap: ensure that TLSCallbacks are gc-able

Call `MakeWeak()` to destruct TLSCallbacks when the js-object dies.

fix #8416

Reviewed-By: Fedor Indutny <fedor@indutny.com>
v0.11.14-release
Fedor Indutny 11 years ago
parent
commit
4dbb84fc52
  1. 1
      src/tls_wrap.cc
  2. 3
      src/tls_wrap.h

1
src/tls_wrap.cc

@ -79,6 +79,7 @@ TLSCallbacks::TLSCallbacks(Environment* env,
cycle_depth_(0), cycle_depth_(0),
eof_(false) { eof_(false) {
node::Wrap<TLSCallbacks>(object(), this); node::Wrap<TLSCallbacks>(object(), this);
MakeWeak(this);
// Initialize queue for clearIn writes // Initialize queue for clearIn writes
QUEUE_INIT(&write_item_queue_); QUEUE_INIT(&write_item_queue_);

3
src/tls_wrap.h

@ -46,6 +46,8 @@ class TLSCallbacks : public crypto::SSLWrap<TLSCallbacks>,
public StreamWrapCallbacks, public StreamWrapCallbacks,
public AsyncWrap { public AsyncWrap {
public: public:
~TLSCallbacks();
static void Initialize(v8::Handle<v8::Object> target, static void Initialize(v8::Handle<v8::Object> target,
v8::Handle<v8::Value> unused, v8::Handle<v8::Value> unused,
v8::Handle<v8::Context> context); v8::Handle<v8::Context> context);
@ -94,7 +96,6 @@ class TLSCallbacks : public crypto::SSLWrap<TLSCallbacks>,
Kind kind, Kind kind,
v8::Handle<v8::Object> sc, v8::Handle<v8::Object> sc,
StreamWrapCallbacks* old); StreamWrapCallbacks* old);
~TLSCallbacks();
static void SSLInfoCallback(const SSL* ssl_, int where, int ret); static void SSLInfoCallback(const SSL* ssl_, int where, int ret);
void InitSSL(); void InitSSL();

Loading…
Cancel
Save