Skip to content
This repository was archived by the owner on Jul 6, 2018. It is now read-only.

Commit cce7722

Browse files
http2: statusCode should be a Number
1 parent 5e305dd commit cce7722

10 files changed

Lines changed: 56 additions & 9 deletions

lib/internal/http2/core.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ function onSessionHeaders(id, cat, flags, headers) {
101101
headers[HTTP2_HEADER_COOKIE] =
102102
headers[HTTP2_HEADER_COOKIE].join('; ');
103103

104+
if (headers[':status']) {
105+
headers[':status'] |= 0;
106+
}
107+
104108
if (stream === undefined) {
105109
switch (owner.type) {
106110
case NGHTTP2_SESSION_SERVER:

test/parallel/test-http2-compat-serverresponse-createpushresponse.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ server.listen(0, common.mustCall(function() {
7474
requestStream.session.on('stream', common.mustCall(onStream));
7575

7676
requestStream.on('response', common.mustCall(function(headers, flags) {
77-
assert.strictEqual(headers[':status'], '200');
77+
assert.strictEqual(headers[':status'], 200);
7878
assert.ok(headers['date']);
7979
assert.strictEqual(flags, h2.constants.NGHTTP2_FLAG_END_HEADERS);
8080
}));

test/parallel/test-http2-compat-serverresponse-flushheaders.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ server.listen(0, common.mustCall(function() {
3131
const request = client.request(headers);
3232
request.on('response', common.mustCall(function(headers, flags) {
3333
assert.strictEqual(headers['foo-bar'], undefined);
34-
assert.strictEqual(headers[':status'], '200');
34+
assert.strictEqual(headers[':status'], 200);
3535
}, 1));
3636
request.on('end', common.mustCall(function() {
3737
client.destroy();

test/parallel/test-http2-compat-serverresponse-statusmessage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ server.listen(0, common.mustCall(function() {
3939
};
4040
const request = client.request(headers);
4141
request.on('response', common.mustCall(function(headers) {
42-
assert.strictEqual(headers[':status'], '200');
42+
assert.strictEqual(headers[':status'], 200);
4343
assert.strictEqual(headers['foo-bar'], 'abc123');
4444
}, 1));
4545
request.on('end', common.mustCall(function() {

test/parallel/test-http2-compat-serverresponse-writehead.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ server.listen(0, common.mustCall(function() {
3434
const request = client.request(headers);
3535
request.on('response', common.mustCall(function(headers) {
3636
assert.strictEqual(headers['foo-bar'], 'abc123');
37-
assert.strictEqual(headers[':status'], '404');
37+
assert.strictEqual(headers[':status'], 404);
3838
}, 1));
3939
request.on('end', common.mustCall(function() {
4040
client.destroy();

test/parallel/test-http2-create-client-secure-session.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ server.on('listening', common.mustCall(function() {
4444
const req = client.request(headers);
4545

4646
req.on('response', common.mustCall(function(headers) {
47-
assert.strictEqual(headers[':status'], '200', 'status code is set');
47+
assert.strictEqual(headers[':status'], 200, 'status code is set');
4848
assert.strictEqual(headers['content-type'], 'text/html',
4949
'content type is set');
5050
assert(headers['date'], 'there is a date');

test/parallel/test-http2-create-client-session.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ server.on('listening', common.mustCall(function() {
3838
const req = client.request(headers);
3939

4040
req.on('response', common.mustCall(function(headers) {
41-
assert.strictEqual(headers[':status'], '200', 'status code is set');
41+
assert.strictEqual(headers[':status'], 200, 'status code is set');
4242
assert.strictEqual(headers['content-type'], 'text/html',
4343
'content type is set');
4444
assert(headers['date'], 'there is a date');

test/parallel/test-http2-info-headers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ server.on('listening', common.mustCall(() => {
6363
// Additional informational headers
6464
req.on('headers', common.mustCall((headers) => {
6565
assert.notStrictEqual(headers, undefined);
66-
assert.strictEqual(headers[':status'], '100');
66+
assert.strictEqual(headers[':status'], 100);
6767
}, 2));
6868

6969
// Response headers
7070
req.on('response', common.mustCall((headers) => {
7171
assert.notStrictEqual(headers, undefined);
72-
assert.strictEqual(headers[':status'], '200');
72+
assert.strictEqual(headers[':status'], 200);
7373
assert.strictEqual(headers['content-type'], 'text/html');
7474
}));
7575

test/parallel/test-http2-server-push-stream.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ server.listen(0, common.mustCall(() => {
3939
assert.strictEqual(headers[':path'], '/foobar');
4040
assert.strictEqual(headers[':authority'], `localhost:${port}`);
4141
stream.on('push', common.mustCall((headers, flags) => {
42-
assert.strictEqual(headers[':status'], '200');
42+
assert.strictEqual(headers[':status'], 200);
4343
assert.strictEqual(headers['content-type'], 'text/html');
4444
assert.strictEqual(headers['x-push-data'], 'pushed by server');
4545
}));
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'use strict';
2+
3+
const common = require('../common');
4+
const assert = require('assert');
5+
6+
const http2 = require('http2');
7+
8+
const server = http2.createServer(function(request, response) {
9+
console.log('responding to ' + request.url);
10+
11+
response.writeHead(200, {'Content-Type': 'text/plain'});
12+
response.write('1\n');
13+
response.write('');
14+
response.write('2\n');
15+
response.write('');
16+
response.end('3\n');
17+
18+
this.close();
19+
});
20+
21+
server.listen(0, common.mustCall(function() {
22+
const client = http2.connect(`http://localhost:${this.address().port}`);
23+
24+
const headers = { ':path': '/' };
25+
const req = client.request(headers).setEncoding('ascii');
26+
27+
let res = '';
28+
29+
req.on('response', (headers) => {
30+
assert.strictEqual(200, headers[':status']);
31+
});
32+
33+
req.on('data', function(chunk) {
34+
res += chunk;
35+
});
36+
37+
req.on('end', common.mustCall(function() {
38+
assert.strictEqual('1\n2\n3\n', res);
39+
client.destroy();
40+
}));
41+
42+
req.end();
43+
}));

0 commit comments

Comments
 (0)