Skip to content

Commit 1a04881

Browse files
sonimadhuriRafaelGSS
authored andcommitted
http: headers(Distinct), trailers(Distinct) setters to be no-op
PR-URL: #45176 Reviewed-By: Paolo Insogna <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Rich Trott <[email protected]>
1 parent ba89cea commit 1a04881

File tree

3 files changed

+63
-18
lines changed

3 files changed

+63
-18
lines changed

lib/_http_incoming.js

+4-12
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'headers', {
122122
}
123123
return this[kHeaders];
124124
},
125-
set: function(val) {
126-
this[kHeaders] = val;
127-
}
125+
set: function(val) {}
128126
});
129127

130128
ObjectDefineProperty(IncomingMessage.prototype, 'headersDistinct', {
@@ -142,9 +140,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'headersDistinct', {
142140
}
143141
return this[kHeadersDistinct];
144142
},
145-
set: function(val) {
146-
this[kHeadersDistinct] = val;
147-
}
143+
set: function(val) {}
148144
});
149145

150146
ObjectDefineProperty(IncomingMessage.prototype, 'trailers', {
@@ -162,9 +158,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'trailers', {
162158
}
163159
return this[kTrailers];
164160
},
165-
set: function(val) {
166-
this[kTrailers] = val;
167-
}
161+
set: function(val) {}
168162
});
169163

170164
ObjectDefineProperty(IncomingMessage.prototype, 'trailersDistinct', {
@@ -182,9 +176,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'trailersDistinct', {
182176
}
183177
return this[kTrailersDistinct];
184178
},
185-
set: function(val) {
186-
this[kTrailersDistinct] = val;
187-
}
179+
set: function(val) {}
188180
});
189181

190182
IncomingMessage.prototype.setTimeout = function setTimeout(msecs, callback) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
'use strict';
2+
3+
const common = require('../common');
4+
const assert = require('assert');
5+
const { createServer, request } = require('http');
6+
7+
const server = createServer(
8+
common.mustCall((req, res) => {
9+
req.headersDistinct = { 'x-req-a': ['zzz'] };
10+
11+
// headersDistinct setter should be a No-Op
12+
assert.deepStrictEqual(req.headersDistinct, {
13+
'transfer-encoding': [
14+
'chunked',
15+
],
16+
'connection': [
17+
'keep-alive',
18+
],
19+
'host': [
20+
`127.0.0.1:${server.address().port}`,
21+
]
22+
});
23+
24+
req.on('end', function() {
25+
res.write('BODY');
26+
res.end();
27+
});
28+
29+
req.resume();
30+
})
31+
);
32+
33+
server.listen(
34+
0,
35+
common.mustCall(() => {
36+
const req = request(
37+
{
38+
host: '127.0.0.1',
39+
port: server.address().port,
40+
path: '/',
41+
method: 'POST',
42+
},
43+
common.mustCall((res) => {
44+
res.on('end', function() {
45+
server.close();
46+
});
47+
res.resume();
48+
})
49+
);
50+
51+
req.write('BODY');
52+
req.end();
53+
})
54+
);

test/parallel/test-set-incoming-message-header.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,23 @@ require('../common');
44
const { IncomingMessage } = require('http');
55
const assert = require('assert');
66

7-
// Headers setter function set a header correctly
7+
// Headers setter should be a No-Op
88
{
99
const im = new IncomingMessage();
1010
im.headers = { key: 'value' };
11-
assert.deepStrictEqual(im.headers, { key: 'value' });
11+
assert.deepStrictEqual(im.headers, {});
1212
}
1313

14-
// Trailers setter function set a header correctly
14+
// Trailers setter should be a No-Op
1515
{
1616
const im = new IncomingMessage();
1717
im.trailers = { key: 'value' };
18-
assert.deepStrictEqual(im.trailers, { key: 'value' });
18+
assert.deepStrictEqual(im.trailers, {});
1919
}
2020

2121
// _addHeaderLines function set a header correctly
2222
{
2323
const im = new IncomingMessage();
24-
im.headers = { key1: 'value1' };
2524
im._addHeaderLines(['key2', 'value2'], 2);
26-
assert.deepStrictEqual(im.headers, { key1: 'value1', key2: 'value2' });
25+
assert.deepStrictEqual(im.headers, { key2: 'value2' });
2726
}

0 commit comments

Comments
 (0)