Skip to content

Commit 514f464

Browse files
committed
http2: refactor to use more primordials
PR-URL: #36142 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Ricky Zhou <0x19951125@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
1 parent 700612f commit 514f464

File tree

3 files changed

+103
-66
lines changed

3 files changed

+103
-66
lines changed

lib/internal/http2/compat.js

+19-12
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22

33
const {
44
ArrayIsArray,
5+
ArrayPrototypePush,
56
Boolean,
7+
FunctionPrototypeBind,
68
ObjectAssign,
79
ObjectCreate,
810
ObjectKeys,
911
ObjectPrototypeHasOwnProperty,
12+
ReflectApply,
1013
ReflectGetPrototypeOf,
14+
StringPrototypeToLowerCase,
15+
StringPrototypeTrim,
1116
Symbol,
1217
} = primordials;
1318

@@ -138,7 +143,7 @@ function onStreamTrailers(trailers, flags, rawTrailers) {
138143
const request = this[kRequest];
139144
if (request !== undefined) {
140145
ObjectAssign(request[kTrailers], trailers);
141-
request[kRawTrailers].push(...rawTrailers);
146+
ArrayPrototypePush(request[kRawTrailers], ...rawTrailers);
142147
}
143148
}
144149

@@ -200,7 +205,7 @@ const proxySocketHandler = {
200205
case 'end':
201206
case 'emit':
202207
case 'destroy':
203-
return stream[prop].bind(stream);
208+
return FunctionPrototypeBind(stream[prop], stream);
204209
case 'writable':
205210
case 'destroyed':
206211
return stream[prop];
@@ -212,8 +217,8 @@ const proxySocketHandler = {
212217
case 'setTimeout':
213218
const session = stream.session;
214219
if (session !== undefined)
215-
return session.setTimeout.bind(session);
216-
return stream.setTimeout.bind(stream);
220+
return FunctionPrototypeBind(session.setTimeout, session);
221+
return FunctionPrototypeBind(stream.setTimeout, stream);
217222
case 'write':
218223
case 'read':
219224
case 'pause':
@@ -223,7 +228,9 @@ const proxySocketHandler = {
223228
const ref = stream.session !== undefined ?
224229
stream.session[kSocket] : stream;
225230
const value = ref[prop];
226-
return typeof value === 'function' ? value.bind(ref) : value;
231+
return typeof value === 'function' ?
232+
FunctionPrototypeBind(value, ref) :
233+
value;
227234
}
228235
},
229236
getPrototypeOf(stream) {
@@ -394,7 +401,7 @@ class Http2ServerRequest extends Readable {
394401

395402
set method(method) {
396403
validateString(method, 'method');
397-
if (method.trim() === '')
404+
if (StringPrototypeTrim(method) === '')
398405
throw new ERR_INVALID_ARG_VALUE('method', method);
399406

400407
this[kHeaders][HTTP2_HEADER_METHOD] = method;
@@ -554,7 +561,7 @@ class Http2ServerResponse extends Stream {
554561

555562
setTrailer(name, value) {
556563
validateString(name, 'name');
557-
name = name.trim().toLowerCase();
564+
name = StringPrototypeToLowerCase(StringPrototypeTrim(name));
558565
assertValidHeader(name, value);
559566
this[kTrailers][name] = value;
560567
}
@@ -570,7 +577,7 @@ class Http2ServerResponse extends Stream {
570577

571578
getHeader(name) {
572579
validateString(name, 'name');
573-
name = name.trim().toLowerCase();
580+
name = StringPrototypeToLowerCase(StringPrototypeTrim(name));
574581
return this[kHeaders][name];
575582
}
576583

@@ -585,7 +592,7 @@ class Http2ServerResponse extends Stream {
585592

586593
hasHeader(name) {
587594
validateString(name, 'name');
588-
name = name.trim().toLowerCase();
595+
name = StringPrototypeToLowerCase(StringPrototypeTrim(name));
589596
return ObjectPrototypeHasOwnProperty(this[kHeaders], name);
590597
}
591598

@@ -594,7 +601,7 @@ class Http2ServerResponse extends Stream {
594601
if (this[kStream].headersSent)
595602
throw new ERR_HTTP2_HEADERS_SENT();
596603

597-
name = name.trim().toLowerCase();
604+
name = StringPrototypeToLowerCase(StringPrototypeTrim(name));
598605

599606
if (name === 'date') {
600607
this[kState].sendDate = false;
@@ -614,7 +621,7 @@ class Http2ServerResponse extends Stream {
614621
}
615622

616623
[kSetHeader](name, value) {
617-
name = name.trim().toLowerCase();
624+
name = StringPrototypeToLowerCase(StringPrototypeTrim(name));
618625
assertValidHeader(name, value);
619626

620627
if (!isConnectionHeaderAllowed(name, value)) {
@@ -755,7 +762,7 @@ class Http2ServerResponse extends Stream {
755762
this.writeHead(this[kState].statusCode);
756763

757764
if (this[kState].closed || stream.destroyed)
758-
onStreamCloseResponse.call(stream);
765+
ReflectApply(onStreamCloseResponse, stream, []);
759766
else
760767
stream.end();
761768

0 commit comments

Comments
 (0)