diff --git a/lib/api/api-upgrade.js b/lib/api/api-upgrade.js index 019fe1efa2d..7effcf21049 100644 --- a/lib/api/api-upgrade.js +++ b/lib/api/api-upgrade.js @@ -50,9 +50,9 @@ class UpgradeHandler extends AsyncResource { } onUpgrade (statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this + assert(statusCode === 101) - assert.strictEqual(statusCode, 101) + const { callback, opaque, context } = this removeSignal(this) diff --git a/lib/core/connect.js b/lib/core/connect.js index e40fb90d81c..50578534ae8 100644 --- a/lib/core/connect.js +++ b/lib/core/connect.js @@ -92,10 +92,10 @@ function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, sess servername = servername || options.servername || util.getServerName(host) || null const sessionKey = servername || hostname - const session = customSession || sessionCache.get(sessionKey) || null - assert(sessionKey) + const session = customSession || sessionCache.get(sessionKey) || null + socket = tls.connect({ highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... ...options, diff --git a/lib/core/util.js b/lib/core/util.js index 00f8a9b200a..9ee7ec23c52 100644 --- a/lib/core/util.js +++ b/lib/core/util.js @@ -233,7 +233,7 @@ function getServerName (host) { return null } - assert.strictEqual(typeof host, 'string') + assert(typeof host === 'string') const servername = getHostname(host) if (net.isIP(servername)) { diff --git a/lib/dispatcher/client-h1.js b/lib/dispatcher/client-h1.js index db5fd6c3746..4a26f641283 100644 --- a/lib/dispatcher/client-h1.js +++ b/lib/dispatcher/client-h1.js @@ -85,35 +85,35 @@ async function lazyllhttp () { return 0 }, wasm_on_status: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) + assert(currentParser.ptr === p) const start = at - currentBufferPtr + currentBufferRef.byteOffset return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 }, wasm_on_message_begin: (p) => { - assert.strictEqual(currentParser.ptr, p) + assert(currentParser.ptr === p) return currentParser.onMessageBegin() || 0 }, wasm_on_header_field: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) + assert(currentParser.ptr === p) const start = at - currentBufferPtr + currentBufferRef.byteOffset return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 }, wasm_on_header_value: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) + assert(currentParser.ptr === p) const start = at - currentBufferPtr + currentBufferRef.byteOffset return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 }, wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { - assert.strictEqual(currentParser.ptr, p) + assert(currentParser.ptr === p) return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 }, wasm_on_body: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) + assert(currentParser.ptr === p) const start = at - currentBufferPtr + currentBufferRef.byteOffset return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 }, wasm_on_message_complete: (p) => { - assert.strictEqual(currentParser.ptr, p) + assert(currentParser.ptr === p) return currentParser.onMessageComplete() || 0 } @@ -363,20 +363,19 @@ class Parser { const { upgrade, client, socket, headers, statusCode } = this assert(upgrade) + assert(client[kSocket] === socket) + assert(!socket.destroyed) + assert(!this.paused) + assert((headers.length & 1) === 0) const request = client[kQueue][client[kRunningIdx]] assert(request) - - assert(!socket.destroyed) - assert(socket === client[kSocket]) - assert(!this.paused) assert(request.upgrade || request.method === 'CONNECT') this.statusCode = null this.statusText = '' this.shouldKeepAlive = null - assert(this.headers.length % 2 === 0) this.headers = [] this.headersSize = 0 @@ -433,7 +432,7 @@ class Parser { return -1 } - assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS) + assert(this.timeoutType === TIMEOUT_HEADERS) this.statusCode = statusCode this.shouldKeepAlive = ( @@ -466,7 +465,7 @@ class Parser { return 2 } - assert(this.headers.length % 2 === 0) + assert((this.headers.length & 1) === 0) this.headers = [] this.headersSize = 0 @@ -523,7 +522,7 @@ class Parser { const request = client[kQueue][client[kRunningIdx]] assert(request) - assert.strictEqual(this.timeoutType, TIMEOUT_BODY) + assert(this.timeoutType === TIMEOUT_BODY) if (this.timeout) { // istanbul ignore else: only for jest if (this.timeout.refresh) { @@ -556,11 +555,12 @@ class Parser { return } + assert(statusCode >= 100) + assert((this.headers.length & 1) === 0) + const request = client[kQueue][client[kRunningIdx]] assert(request) - assert(statusCode >= 100) - this.statusCode = null this.statusText = '' this.bytesRead = 0 @@ -568,7 +568,6 @@ class Parser { this.keepAlive = '' this.connection = '' - assert(this.headers.length % 2 === 0) this.headers = [] this.headersSize = 0 @@ -587,7 +586,7 @@ class Parser { client[kQueue][client[kRunningIdx]++] = null if (socket[kWriting]) { - assert.strictEqual(client[kRunning], 0) + assert(client[kRunning] === 0) // Response completed before request. util.destroy(socket, new InformationalError('reset')) return constants.ERROR.PAUSED @@ -646,10 +645,10 @@ async function connectH1 (client, socket) { socket[kParser] = new Parser(client, socket, llhttpInstance) addListener(socket, 'error', function (err) { - const parser = this[kParser] - assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + const parser = this[kParser] + // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded // to the user. if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { diff --git a/lib/dispatcher/client.js b/lib/dispatcher/client.js index cb61206b1ed..7e22aa000ba 100644 --- a/lib/dispatcher/client.js +++ b/lib/dispatcher/client.js @@ -385,6 +385,10 @@ function onError (client, err) { } } +/** + * @param {Client} client + * @returns + */ async function connect (client) { assert(!client[kConnecting]) assert(!client[kHTTPContext])