static const int kMaxSessionSize = 10 * 1024;
protected:
+ static const int64_t kExternalSize = sizeof(SSL_CTX);
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
static void Init(const v8::FunctionCallbackInfo<v8::Value>& args);
cert_(nullptr),
issuer_(nullptr) {
MakeWeak<SecureContext>(this);
+ env->isolate()->AdjustAmountOfExternalAllocatedMemory(kExternalSize);
}
void FreeCTXMem() {
if (ctx_) {
+ env()->isolate()->AdjustAmountOfExternalAllocatedMemory(-kExternalSize);
if (ctx_->cert_store == root_cert_store) {
// SSL_CTX_free() will attempt to free the cert_store as well.
// Since we want our root_cert_store to stay around forever
session_callbacks_(false),
new_session_wait_(false) {
ssl_ = SSL_new(sc->ctx_);
+ env_->isolate()->AdjustAmountOfExternalAllocatedMemory(kExternalSize);
CHECK_NE(ssl_, nullptr);
}
inline bool is_waiting_new_session() const { return new_session_wait_; }
protected:
+ // Size allocated by OpenSSL: one for SSL structure, one for SSL3_STATE and
+ // some for buffers.
+ // NOTE: Actually it is much more than this
+ static const int64_t kExternalSize =
+ sizeof(SSL) + sizeof(SSL3_STATE) + 42 * 1024;
+
static void InitNPN(SecureContext* sc);
static void AddMethods(Environment* env, v8::Handle<v8::FunctionTemplate> t);