Skip to content

Commit 3faf140

Browse files
authored
fix: run asserts first if possible (#3541)
1 parent b043a5f commit 3faf140

5 files changed

Lines changed: 29 additions & 26 deletions

File tree

lib/api/api-upgrade.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ class UpgradeHandler extends AsyncResource {
5050
}
5151

5252
onUpgrade (statusCode, rawHeaders, socket) {
53-
const { callback, opaque, context } = this
53+
assert(statusCode === 101)
5454

55-
assert.strictEqual(statusCode, 101)
55+
const { callback, opaque, context } = this
5656

5757
removeSignal(this)
5858

lib/core/connect.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,10 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess
9292
servername = servername || options.servername || util.getServerName(host) || null
9393

9494
const sessionKey = servername || hostname
95-
const session = customSession || sessionCache.get(sessionKey) || null
96-
9795
assert(sessionKey)
9896

97+
const session = customSession || sessionCache.get(sessionKey) || null
98+
9999
socket = tls.connect({
100100
highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...
101101
...options,

lib/core/util.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ function getServerName (host) {
233233
return null
234234
}
235235

236-
assert.strictEqual(typeof host, 'string')
236+
assert(typeof host === 'string')
237237

238238
const servername = getHostname(host)
239239
if (net.isIP(servername)) {

lib/dispatcher/client-h1.js

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,35 +84,35 @@ async function lazyllhttp () {
8484
return 0
8585
},
8686
wasm_on_status: (p, at, len) => {
87-
assert.strictEqual(currentParser.ptr, p)
87+
assert(currentParser.ptr === p)
8888
const start = at - currentBufferPtr + currentBufferRef.byteOffset
8989
return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
9090
},
9191
wasm_on_message_begin: (p) => {
92-
assert.strictEqual(currentParser.ptr, p)
92+
assert(currentParser.ptr === p)
9393
return currentParser.onMessageBegin() || 0
9494
},
9595
wasm_on_header_field: (p, at, len) => {
96-
assert.strictEqual(currentParser.ptr, p)
96+
assert(currentParser.ptr === p)
9797
const start = at - currentBufferPtr + currentBufferRef.byteOffset
9898
return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
9999
},
100100
wasm_on_header_value: (p, at, len) => {
101-
assert.strictEqual(currentParser.ptr, p)
101+
assert(currentParser.ptr === p)
102102
const start = at - currentBufferPtr + currentBufferRef.byteOffset
103103
return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
104104
},
105105
wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {
106-
assert.strictEqual(currentParser.ptr, p)
106+
assert(currentParser.ptr === p)
107107
return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0
108108
},
109109
wasm_on_body: (p, at, len) => {
110-
assert.strictEqual(currentParser.ptr, p)
110+
assert(currentParser.ptr === p)
111111
const start = at - currentBufferPtr + currentBufferRef.byteOffset
112112
return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
113113
},
114114
wasm_on_message_complete: (p) => {
115-
assert.strictEqual(currentParser.ptr, p)
115+
assert(currentParser.ptr === p)
116116
return currentParser.onMessageComplete() || 0
117117
}
118118

@@ -368,20 +368,19 @@ class Parser {
368368
const { upgrade, client, socket, headers, statusCode } = this
369369

370370
assert(upgrade)
371+
assert(client[kSocket] === socket)
372+
assert(!socket.destroyed)
373+
assert(!this.paused)
374+
assert((headers.length & 1) === 0)
371375

372376
const request = client[kQueue][client[kRunningIdx]]
373377
assert(request)
374-
375-
assert(!socket.destroyed)
376-
assert(socket === client[kSocket])
377-
assert(!this.paused)
378378
assert(request.upgrade || request.method === 'CONNECT')
379379

380380
this.statusCode = null
381381
this.statusText = ''
382382
this.shouldKeepAlive = null
383383

384-
assert(this.headers.length % 2 === 0)
385384
this.headers = []
386385
this.headersSize = 0
387386

@@ -438,7 +437,7 @@ class Parser {
438437
return -1
439438
}
440439

441-
assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)
440+
assert(this.timeoutType === TIMEOUT_HEADERS)
442441

443442
this.statusCode = statusCode
444443
this.shouldKeepAlive = (
@@ -471,7 +470,7 @@ class Parser {
471470
return 2
472471
}
473472

474-
assert(this.headers.length % 2 === 0)
473+
assert((this.headers.length & 1) === 0)
475474
this.headers = []
476475
this.headersSize = 0
477476

@@ -528,7 +527,7 @@ class Parser {
528527
const request = client[kQueue][client[kRunningIdx]]
529528
assert(request)
530529

531-
assert.strictEqual(this.timeoutType, TIMEOUT_BODY)
530+
assert(this.timeoutType === TIMEOUT_BODY)
532531
if (this.timeout) {
533532
// istanbul ignore else: only for jest
534533
if (this.timeout.refresh) {
@@ -561,19 +560,19 @@ class Parser {
561560
return
562561
}
563562

563+
assert(statusCode >= 100)
564+
assert((this.headers.length & 1) === 0)
565+
564566
const request = client[kQueue][client[kRunningIdx]]
565567
assert(request)
566568

567-
assert(statusCode >= 100)
568-
569569
this.statusCode = null
570570
this.statusText = ''
571571
this.bytesRead = 0
572572
this.contentLength = ''
573573
this.keepAlive = ''
574574
this.connection = ''
575575

576-
assert(this.headers.length % 2 === 0)
577576
this.headers = []
578577
this.headersSize = 0
579578

@@ -592,7 +591,7 @@ class Parser {
592591
client[kQueue][client[kRunningIdx]++] = null
593592

594593
if (socket[kWriting]) {
595-
assert.strictEqual(client[kRunning], 0)
594+
assert(client[kRunning] === 0)
596595
// Response completed before request.
597596
util.destroy(socket, new InformationalError('reset'))
598597
return constants.ERROR.PAUSED
@@ -651,10 +650,10 @@ async function connectH1 (client, socket) {
651650
socket[kParser] = new Parser(client, socket, llhttpInstance)
652651

653652
addListener(socket, 'error', function (err) {
654-
const parser = this[kParser]
655-
656653
assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')
657654

655+
const parser = this[kParser]
656+
658657
// On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded
659658
// to the user.
660659
if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {

lib/dispatcher/client.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,10 @@ function onError (client, err) {
361361
}
362362
}
363363

364+
/**
365+
* @param {Client} client
366+
* @returns
367+
*/
364368
async function connect (client) {
365369
assert(!client[kConnecting])
366370
assert(!client[kHTTPContext])

0 commit comments

Comments
 (0)