diff --git a/CHANGELOG.md b/CHANGELOG.md index 87c9df77b4c80d..8dd445bcf5cd33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,7 +30,8 @@ release. -14.15.2
+14.15.3
+14.15.2
14.15.1
14.15.0
14.14.0
diff --git a/doc/changelogs/CHANGELOG_V14.md b/doc/changelogs/CHANGELOG_V14.md index 00f1ab61f5e830..b4320d74055d47 100644 --- a/doc/changelogs/CHANGELOG_V14.md +++ b/doc/changelogs/CHANGELOG_V14.md @@ -11,6 +11,7 @@ +14.15.3
14.15.2
14.15.1
14.15.0
@@ -53,6 +54,17 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) + +## 2020-12-17, Version 14.15.3 'Fermium' (LTS), @BethGriggs + +### Notable Changes + +Node.js v14.15.2 included a commit that has caused reported breakages when cloning request objects. This release reverts the commit that introduced the behaviour change. See https://github.com/nodejs/node/issues/36550 for more details. + +### Commits + +* [[`4264d9aa67`](https://github.com/nodejs/node/commit/4264d9aa67)] - ***Revert*** "**http**: lazy create IncomingMessage.headers" (Beth Griggs) [#36553](https://github.com/nodejs/node/pull/36553) + ## 2020-12-15, Version 14.15.2 'Fermium' (LTS), @BethGriggs diff --git a/lib/_http_incoming.js b/lib/_http_incoming.js index 05359b9f48b3ef..a33d75c3e7900e 100644 --- a/lib/_http_incoming.js +++ b/lib/_http_incoming.js @@ -24,16 +24,10 @@ const { ObjectDefineProperty, ObjectSetPrototypeOf, - Symbol } = primordials; const Stream = require('stream'); -const kHeaders = Symbol('kHeaders'); -const kHeadersCount = Symbol('kHeadersCount'); -const kTrailers = Symbol('kTrailers'); -const kTrailersCount = Symbol('kTrailersCount'); - function readStart(socket) { if (socket && !socket._paused && socket.readable) socket.resume(); @@ -64,11 +58,9 @@ function IncomingMessage(socket) { this.httpVersionMinor = null; this.httpVersion = null; this.complete = false; - this[kHeaders] = null; - this[kHeadersCount] = 0; + this.headers = {}; this.rawHeaders = []; - this[kTrailers] = null; - this[kTrailersCount] = 0; + this.trailers = {}; this.rawTrailers = []; this.aborted = false; @@ -101,44 +93,6 @@ ObjectDefineProperty(IncomingMessage.prototype, 'connection', { } }); -ObjectDefineProperty(IncomingMessage.prototype, 'headers', { - get: function() { - if (!this[kHeaders]) { - this[kHeaders] = {}; - - const src = this.rawHeaders; - const dst = this[kHeaders]; - - for (let n = 0; n < this[kHeadersCount]; n += 2) { - this._addHeaderLine(src[n + 0], src[n + 1], dst); - } - } - return this[kHeaders]; - }, - set: function(val) { - this[kHeaders] = val; - } -}); - -ObjectDefineProperty(IncomingMessage.prototype, 'trailers', { - get: function() { - if (!this[kTrailers]) { - this[kTrailers] = {}; - - const src = this.rawTrailers; - const dst = this[kTrailers]; - - for (let n = 0; n < this[kTrailersCount]; n += 2) { - this._addHeaderLine(src[n + 0], src[n + 1], dst); - } - } - return this[kTrailers]; - }, - set: function(val) { - this[kTrailers] = val; - } -}); - IncomingMessage.prototype.setTimeout = function setTimeout(msecs, callback) { if (callback) this.on('timeout', callback); @@ -177,18 +131,14 @@ function _addHeaderLines(headers, n) { let dest; if (this.complete) { this.rawTrailers = headers; - this[kTrailersCount] = n; - dest = this[kTrailers]; + dest = this.trailers; } else { this.rawHeaders = headers; - this[kHeadersCount] = n; - dest = this[kHeaders]; + dest = this.headers; } - if (dest) { - for (let i = 0; i < n; i += 2) { - this._addHeaderLine(headers[i], headers[i + 1], dest); - } + for (let i = 0; i < n; i += 2) { + this._addHeaderLine(headers[i], headers[i + 1], dest); } } } diff --git a/src/node_version.h b/src/node_version.h index 690f904c08f20f..3e6197f4235f0c 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -29,7 +29,7 @@ #define NODE_VERSION_IS_LTS 1 #define NODE_VERSION_LTS_CODENAME "Fermium" -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)