Repository navigation
http2: trailers or response to be emitted? #41251
Description
Activity
The last frame in the sequence bears an END_STREAM flag, noting that
a HEADERS frame bearing the END_STREAM flag can be followed by
CONTINUATION frames that carry any remaining portions of the header
block.Trailing header fields are carried in a header block that also
terminates the stream. Such a header block is a sequence starting
with a HEADERS frame, followed by zero or more CONTINUATION frames,
where the HEADERS frame bears an END_STREAM flag.👍
Following: then
const http2 = require('http2'); const server = http2.createServer((request, response) => { response.end(); // just empty end, nothing else }); server.listen(() => { const { port } = server.address(); const session = http2.connect(`http://localhost:${port}`); const request = session.request({ ':path': '/', ':method': 'GET', }); request.on('response', (headers) => { console.log('got response', headers); }); request.on('headers', () => { console.log('got headers'); }); request.on('trailers', (trailers) => { console.log('got trailers', trailers); }); request.end(); request.resume(); request.on('end', () => { session.close(); server.close(); }); });
got response [Object: null prototype] { ':status': 200, date: 'Mon, 20 Dec 2021 09:47:15 GMT', [Symbol(nodejs.http2.sensitiveHeaders)]: [] }I think it should emit
trailersinstead ofresponse.- addedhttp2Issues and PRs related to the http2 subsystem.Issues and PRs related to the http2 subsystem.
on Dec 20, 2021 - addedlinuxIssues and PRs related to the Linux platform.Issues and PRs related to the Linux platform.
on Dec 21, 2021 I think it should emit trailers instead of response.
I think HTTP/2 should be consistent with HTTP/1 behavior. About the above case, they shouldn't emit
trailersevent.@MoonBall Please note that in the original issue it emits
trailersinstead ofresponse. I'd prefer consistent behavior over making it look like HTTP/1.In the original issue I think it should emit
response. I would like to dig into itDuplicate of #38258
- marked this as a duplicate of http2: Only first headers cause an event in http2 stream, all following headers are muted. #38258
on May 11, 2024






Version
v17.3.0
Platform
Linux pop-os 5.15.5-76051505-generic #202111250933~1638201579~21.04~09f1aa7-Ubuntu SMP Tue Nov 30 02: x86_64 x86_64 x86_64 GNU/LinuxSubsystem
http2
What steps will reproduce the bug?
How often does it reproduce? Is there a required condition?
Always.
What is the expected behavior?
got headers got response [Object: null prototype] { ':status': 200, date: 'Mon, 20 Dec 2021 08:27:48 GMT', [Symbol(nodejs.http2.sensitiveHeaders)]: [] }What do you see instead?
got headers +got trailers [Object: null prototype] { ':status': 200, date: 'Mon, 20 Dec 2021 08:27:48 GMT', [Symbol(nodejs.http2.sensitiveHeaders)]: [] }Additional information
I'm not sure if this is the expected behavior. HTTP/1 for comparison (trailers are empty):