-
Notifications
You must be signed in to change notification settings - Fork 29.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
http2: remove waitTrailers
listener after closing a stream
#21764
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
'use strict'; | ||
|
||
const common = require('../common'); | ||
if (!common.hasCrypto) | ||
common.skip('missing crypto'); | ||
const h2 = require('http2'); | ||
|
||
// This test case ensures that calling of res.end after sending | ||
// 204, 205 and 304 HTTP statuses will not cause an error | ||
// See issue: https://github.com/nodejs/node/issues/21740 | ||
|
||
const { | ||
HTTP_STATUS_NO_CONTENT, | ||
HTTP_STATUS_RESET_CONTENT, | ||
HTTP_STATUS_NOT_MODIFIED | ||
} = h2.constants; | ||
|
||
const STATUS_WITHOUT_BODY = [ | ||
HTTP_STATUS_NO_CONTENT, | ||
HTTP_STATUS_RESET_CONTENT, | ||
HTTP_STATUS_NOT_MODIFIED, | ||
]; | ||
const STATUS_CODES_COUNT = STATUS_WITHOUT_BODY.length; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: would you mind changing the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
|
||
const server = h2.createServer(common.mustCall(function(req, res) { | ||
res.writeHead(STATUS_WITHOUT_BODY.pop()); | ||
res.end(); | ||
}, STATUS_CODES_COUNT)); | ||
|
||
server.listen(0, common.mustCall(function() { | ||
const url = `http://localhost:${server.address().port}`; | ||
const client = h2.connect(url, common.mustCall(() => { | ||
let responseCount = 0; | ||
const closeAfterResponse = () => { | ||
if (STATUS_CODES_COUNT === ++responseCount) { | ||
client.destroy(); | ||
server.close(); | ||
} | ||
}; | ||
|
||
for (let i = 0; i < STATUS_CODES_COUNT; i++) { | ||
const request = client.request(); | ||
request.on('response', common.mustCall(closeAfterResponse)); | ||
} | ||
|
||
})); | ||
})); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: would you be so kind and use
removeListener
instead? That seems much clearer from the semantics and is therefore easier to grasp :-)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done