mirror of
https://github.com/nodejs/node.git
synced 2025-04-29 22:40:57 +00:00

Expand argument validation through compat API, adjust behaviour of response.end to not throw if stream already closed to match http1, adjust behaviour of writeContinue to not throw if stream already closed and other very small tweaks. Add tests for added and fixed behaviour. Add tests for edge case behaviours of setTimeout, createPushResponse, destroy, end and trailers. PR-URL: https://github.com/nodejs/node/pull/15473 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Minwoo Jung <jmwsoft@gmail.com>
44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
// Flags: --expose-http2
|
|
'use strict';
|
|
|
|
const common = require('../common');
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
const assert = require('assert');
|
|
const http2 = require('http2');
|
|
|
|
const msecs = common.platformTimeout(1);
|
|
const server = http2.createServer();
|
|
|
|
server.on('request', (req, res) => {
|
|
res.setTimeout(msecs, common.mustCall(() => {
|
|
res.end();
|
|
res.setTimeout(msecs, common.mustNotCall());
|
|
}));
|
|
res.on('finish', common.mustCall(() => {
|
|
res.setTimeout(msecs, common.mustNotCall());
|
|
process.nextTick(() => {
|
|
assert.doesNotThrow(
|
|
() => res.setTimeout(msecs, common.mustNotCall())
|
|
);
|
|
server.close();
|
|
});
|
|
}));
|
|
});
|
|
|
|
server.listen(0, common.mustCall(() => {
|
|
const port = server.address().port;
|
|
const client = http2.connect(`http://localhost:${port}`);
|
|
const req = client.request({
|
|
':path': '/',
|
|
':method': 'GET',
|
|
':scheme': 'http',
|
|
':authority': `localhost:${port}`
|
|
});
|
|
req.on('end', common.mustCall(() => {
|
|
client.destroy();
|
|
}));
|
|
req.resume();
|
|
req.end();
|
|
}));
|