Skip to content

Commit 38c46b1

Browse files
committed
http2: emit response event instead of trailers event
1 parent e7d4e6b commit 38c46b1

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

lib/internal/http2/core.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ function onSessionHeaders(handle, id, cat, flags, headers, sensitiveHeaders) {
395395
} else if (cat === NGHTTP2_HCAT_PUSH_RESPONSE) {
396396
event = 'push';
397397
// cat === NGHTTP2_HCAT_HEADERS:
398-
} else if (!endOfStream && status !== undefined && status >= 200) {
398+
} else if (status >= 200) {
399399
event = 'response';
400400
} else {
401401
event = endOfStream ? 'trailers' : 'headers';
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
'use strict';
2+
3+
const common = require('../common');
4+
if (!common.hasCrypto)
5+
common.skip('missing crypto');
6+
const http2 = require('http2');
7+
const assert = require('assert');
8+
9+
const server = http2.createServer((request, response) => {
10+
response.writeContinue();
11+
response.end();
12+
});
13+
14+
server.listen(0, common.mustCall(() => {
15+
const client = http2.connect(`http://localhost:${server.address().port}`);
16+
17+
{
18+
const req = client.request({ ':path': '/' });
19+
20+
req.on('headers', common.mustCall((headers) => {
21+
assert.notStrictEqual(headers, undefined);
22+
assert.strictEqual(headers[':status'], 100);
23+
}));
24+
25+
req.on('response', common.mustCall((headers) => {
26+
assert.notStrictEqual(headers, undefined);
27+
assert.strictEqual(headers[':status'], 200);
28+
}));
29+
30+
req.on('trailers', common.mustNotCall());
31+
32+
req.resume();
33+
req.on('end', () => {
34+
client.close();
35+
server.close();
36+
});
37+
req.end();
38+
}
39+
}));

0 commit comments

Comments
 (0)