File tree 3 files changed +27
-6
lines changed
3 files changed +27
-6
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,11 @@ BIO* NodeBIO::New() {
27
27
}
28
28
29
29
30
+ void NodeBIO::AssignEnvironment (Environment* env) {
31
+ env_ = env;
32
+ }
33
+
34
+
30
35
int NodeBIO::New (BIO* bio) {
31
36
bio->ptr = new NodeBIO ();
32
37
@@ -399,7 +404,7 @@ void NodeBIO::TryAllocateForWrite(size_t hint) {
399
404
kThroughputBufferLength ;
400
405
if (len < hint)
401
406
len = hint;
402
- Buffer* next = new Buffer (len);
407
+ Buffer* next = new Buffer (env_, len);
403
408
404
409
if (w == nullptr ) {
405
410
next->next_ = next;
Original file line number Diff line number Diff line change 2
2
#define SRC_NODE_CRYPTO_BIO_H_
3
3
4
4
#include " openssl/bio.h"
5
+ #include " env.h"
6
+ #include " env-inl.h"
5
7
#include " util.h"
6
8
#include " util-inl.h"
9
+ #include " v8.h"
7
10
8
11
namespace node {
9
12
10
13
class NodeBIO {
11
14
public:
12
- NodeBIO () : initial_(kInitialBufferLength ),
15
+ NodeBIO () : env_(nullptr ),
16
+ initial_ (kInitialBufferLength ),
13
17
length_(0 ),
14
18
read_head_(nullptr ),
15
19
write_head_(nullptr ) {
@@ -19,6 +23,8 @@ class NodeBIO {
19
23
20
24
static BIO* New ();
21
25
26
+ void AssignEnvironment (Environment* env);
27
+
22
28
// Move read head to next buffer if needed
23
29
void TryMoveReadHead ();
24
30
@@ -89,24 +95,31 @@ class NodeBIO {
89
95
90
96
class Buffer {
91
97
public:
92
- explicit Buffer (size_t len) : read_pos_(0 ),
93
- write_pos_(0 ),
94
- len_(len),
95
- next_(nullptr ) {
98
+ Buffer (Environment* env, size_t len) : env_(env),
99
+ read_pos_ (0 ),
100
+ write_pos_(0 ),
101
+ len_(len),
102
+ next_(nullptr ) {
96
103
data_ = new char [len];
104
+ if (env_ != nullptr )
105
+ env_->isolate ()->AdjustAmountOfExternalAllocatedMemory (len);
97
106
}
98
107
99
108
~Buffer () {
100
109
delete[] data_;
110
+ if (env_ != nullptr )
111
+ env_->isolate ()->AdjustAmountOfExternalAllocatedMemory (-len_);
101
112
}
102
113
114
+ Environment* env_;
103
115
size_t read_pos_;
104
116
size_t write_pos_;
105
117
size_t len_;
106
118
Buffer* next_;
107
119
char * data_;
108
120
};
109
121
122
+ Environment* env_;
110
123
size_t initial_;
111
124
size_t length_;
112
125
Buffer* read_head_;
Original file line number Diff line number Diff line change @@ -127,6 +127,8 @@ void TLSWrap::InitSSL() {
127
127
// Initialize SSL
128
128
enc_in_ = NodeBIO::New ();
129
129
enc_out_ = NodeBIO::New ();
130
+ NodeBIO::FromBIO (enc_in_)->AssignEnvironment (env ());
131
+ NodeBIO::FromBIO (enc_out_)->AssignEnvironment (env ());
130
132
131
133
SSL_set_bio (ssl_, enc_in_, enc_out_);
132
134
@@ -162,6 +164,7 @@ void TLSWrap::InitSSL() {
162
164
163
165
// Initialize ring for queud clear data
164
166
clear_in_ = new NodeBIO ();
167
+ clear_in_->AssignEnvironment (env ());
165
168
}
166
169
167
170
You can’t perform that action at this time.
0 commit comments