summaryrefslogtreecommitdiff
path: root/lib/_http_outgoing.js
diff options
context:
space:
mode:
authorBrian White <mscdex@mscdex.net>2017-03-05 21:15:15 -0500
committerBrian White <mscdex@mscdex.net>2017-03-09 05:50:23 -0500
commitb377034359aa07f2ba83a5a0c9f859418cb80e39 (patch)
tree951fbd012dfbb3ee7138722c5a691b16efce0e19 /lib/_http_outgoing.js
parent940b5303bef7aee9b24214c62e4b6f182f23f82a (diff)
downloadandroid-node-v8-b377034359aa07f2ba83a5a0c9f859418cb80e39.tar.gz
android-node-v8-b377034359aa07f2ba83a5a0c9f859418cb80e39.tar.bz2
android-node-v8-b377034359aa07f2ba83a5a0c9f859418cb80e39.zip
http: support old private properties and function
PR-URL: https://github.com/nodejs/node/pull/10941 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Diffstat (limited to 'lib/_http_outgoing.js')
-rw-r--r--lib/_http_outgoing.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js
index 6ada7bd99f..51ded1eae6 100644
--- a/lib/_http_outgoing.js
+++ b/lib/_http_outgoing.js
@@ -83,6 +83,75 @@ function OutgoingMessage() {
util.inherits(OutgoingMessage, Stream);
+Object.defineProperty(OutgoingMessage.prototype, '_headers', {
+ get: function() {
+ return this.getHeaders();
+ },
+ set: function(val) {
+ if (val == null) {
+ this[outHeadersKey] = null;
+ } else if (typeof val === 'object') {
+ const headers = this[outHeadersKey] = {};
+ const keys = Object.keys(val);
+ for (var i = 0; i < keys.length; ++i) {
+ const name = keys[i];
+ headers[name.toLowerCase()] = [name, val[name]];
+ }
+ }
+ }
+});
+
+Object.defineProperty(OutgoingMessage.prototype, '_headerNames', {
+ get: function() {
+ const headers = this[outHeadersKey];
+ if (headers) {
+ const out = new StorageObject();
+ const keys = Object.keys(headers);
+ for (var i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const val = headers[key][0];
+ out[key] = val;
+ }
+ return out;
+ } else {
+ return headers;
+ }
+ },
+ set: function(val) {
+ if (typeof val === 'object' && val !== null) {
+ const headers = this[outHeadersKey];
+ if (!headers)
+ return;
+ const keys = Object.keys(val);
+ for (var i = 0; i < keys.length; ++i) {
+ const header = headers[keys[i]];
+ if (header)
+ header[0] = val[keys[i]];
+ }
+ }
+ }
+});
+
+
+OutgoingMessage.prototype._renderHeaders = function _renderHeaders() {
+ if (this._header) {
+ throw new Error('Can\'t render headers after they are sent to the client');
+ }
+
+ var headersMap = this[outHeadersKey];
+ if (!headersMap) return {};
+
+ var headers = {};
+ var keys = Object.keys(headersMap);
+
+ for (var i = 0, l = keys.length; i < l; i++) {
+ var key = keys[i];
+ headers[headersMap[key][0]] = headersMap[key][1];
+ }
+ return headers;
+};
+
+
exports.OutgoingMessage = OutgoingMessage;