Skip to content

Commit c5740f9

Browse files
committedAug 14, 2017
http2: name padding buffer fields
PR-URL: #14744 Reviewed-By: James M Snell <[email protected]>
1 parent 8a0d101 commit c5740f9

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed
 

‎lib/internal/http2/core.js

+13-7
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,12 @@ const kType = Symbol('type');
7373
const kDefaultSocketTimeout = 2 * 60 * 1000;
7474
const kRenegTest = /TLS session renegotiation disabled for this socket/;
7575

76-
const { paddingBuffer } = binding;
76+
const {
77+
paddingBuffer,
78+
PADDING_BUF_FRAME_LENGTH,
79+
PADDING_BUF_MAX_PAYLOAD_LENGTH,
80+
PADDING_BUF_RETURN_VALUE
81+
} = binding;
7782

7883
const {
7984
NGHTTP2_CANCEL,
@@ -393,12 +398,13 @@ function onSelectPadding(fn) {
393398
'bug in Node.js');
394399
return function getPadding() {
395400
debug('fetching padding for frame');
396-
const frameLen = paddingBuffer[0];
397-
const maxFramePayloadLen = paddingBuffer[1];
398-
paddingBuffer[2] = Math.min(maxFramePayloadLen,
399-
Math.max(frameLen,
400-
fn(frameLen,
401-
maxFramePayloadLen) | 0));
401+
const frameLen = paddingBuffer[PADDING_BUF_FRAME_LENGTH];
402+
const maxFramePayloadLen = paddingBuffer[PADDING_BUF_MAX_PAYLOAD_LENGTH];
403+
paddingBuffer[PADDING_BUF_RETURN_VALUE] =
404+
Math.min(maxFramePayloadLen,
405+
Math.max(frameLen,
406+
fn(frameLen,
407+
maxFramePayloadLen) | 0));
402408
};
403409
}
404410

‎src/node_http2.cc

+15-4
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,15 @@ enum Http2OptionsIndex {
5959
IDX_OPTIONS_FLAGS
6060
};
6161

62+
enum Http2PaddingBufferFields {
63+
PADDING_BUF_FRAME_LENGTH,
64+
PADDING_BUF_MAX_PAYLOAD_LENGTH,
65+
PADDING_BUF_RETURN_VALUE,
66+
PADDING_BUF_FIELD_COUNT
67+
};
68+
6269
struct http2_state {
63-
uint32_t padding_buffer[3];
70+
uint32_t padding_buffer[PADDING_BUF_FIELD_COUNT];
6471
uint32_t options_buffer[IDX_OPTIONS_FLAGS + 1];
6572
uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1];
6673
double session_state_buffer[IDX_SESSION_STATE_COUNT];
@@ -120,10 +127,10 @@ ssize_t Http2Session::OnCallbackPadding(size_t frameLen,
120127

121128
if (object()->Has(context, env()->ongetpadding_string()).FromJust()) {
122129
uint32_t* buffer = env()->http2_state_buffer()->padding_buffer;
123-
buffer[0] = frameLen;
124-
buffer[1] = maxPayloadLen;
130+
buffer[PADDING_BUF_FRAME_LENGTH] = frameLen;
131+
buffer[PADDING_BUF_MAX_PAYLOAD_LENGTH] = maxPayloadLen;
125132
MakeCallback(env()->ongetpadding_string(), 0, nullptr);
126-
uint32_t retval = buffer[2];
133+
uint32_t retval = buffer[PADDING_BUF_RETURN_VALUE];
127134
retval = retval <= maxPayloadLen ? retval : maxPayloadLen;
128135
retval = retval >= frameLen ? retval : frameLen;
129136
CHECK_GE(retval, frameLen);
@@ -1167,6 +1174,10 @@ void Initialize(Local<Object> target,
11671174
SET_STATE_TYPEDARRAY("optionsBuffer", Uint32Array, options_buffer);
11681175
#undef SET_STATE_TYPEDARRAY
11691176

1177+
NODE_DEFINE_CONSTANT(target, PADDING_BUF_FRAME_LENGTH);
1178+
NODE_DEFINE_CONSTANT(target, PADDING_BUF_MAX_PAYLOAD_LENGTH);
1179+
NODE_DEFINE_CONSTANT(target, PADDING_BUF_RETURN_VALUE);
1180+
11701181
// Method to fetch the nghttp2 string description of an nghttp2 error code
11711182
env->SetMethod(target, "nghttp2ErrorString", HttpErrorString);
11721183

0 commit comments

Comments
 (0)
Please sign in to comment.