Skip to content

Commit

Permalink
tls_wrap: inherit from the AsyncWrap first
Browse files Browse the repository at this point in the history
`WrapperInfo` casts pointer in JS object's internal field to
`AsyncWrap`. This approach fails miserably for `TLSWrap` because it was
inhereted from the `StreamBase` first, creating different kind of
`vtable` for the whole class.

Reorder parent classes to put `AsyncWrap` first.

Fix: #4250
PR-URL: #4268
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
indutny authored and cjihrig committed Dec 15, 2015
1 parent ca21eb6 commit a1b4921
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
6 changes: 3 additions & 3 deletions src/tls_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ TLSWrap::TLSWrap(Environment* env,
Kind kind,
StreamBase* stream,
SecureContext* sc)
: SSLWrap<TLSWrap>(env, sc, kind),
StreamBase(env),
AsyncWrap(env,
: AsyncWrap(env,
env->tls_wrap_constructor_function()->NewInstance(),
AsyncWrap::PROVIDER_TLSWRAP),
SSLWrap<TLSWrap>(env, sc, kind),
StreamBase(env),
sc_(sc),
stream_(stream),
enc_in_(nullptr),
Expand Down
6 changes: 3 additions & 3 deletions src/tls_wrap.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ namespace crypto {
class SecureContext;
}

class TLSWrap : public crypto::SSLWrap<TLSWrap>,
public StreamBase,
public AsyncWrap {
class TLSWrap : public AsyncWrap,
public crypto::SSLWrap<TLSWrap>,
public StreamBase {
public:
~TLSWrap() override;

Expand Down

0 comments on commit a1b4921

Please sign in to comment.