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.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)
|