mirror of
https://github.com/nodejs/node.git
synced 2025-04-29 14:25:18 +00:00

Server requests aka. IncomingMessage emits 'aborted' instead of 'error' which causes confusion when the object is used as a regular stream, i.e. if functions working on streams are passed a server request object they might not work properly unless they take this into account. Refs: https://github.com/nodejs/web-server-frameworks/issues/41 PR-URL: https://github.com/nodejs/node/pull/33172 Fixes: https://github.com/nodejs/node/issues/28172 Refs: https://github.com/nodejs/node/pull/28677 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const http = require('http');
|
|
const assert = require('assert');
|
|
|
|
{
|
|
const server = http.createServer(common.mustCall(function(req, res) {
|
|
req.on('aborted', common.mustCall(function() {
|
|
assert.strictEqual(this.aborted, true);
|
|
}));
|
|
req.on('error', common.mustCall(function(err) {
|
|
assert.strictEqual(err.code, 'ECONNRESET');
|
|
assert.strictEqual(err.message, 'aborted');
|
|
server.close();
|
|
}));
|
|
assert.strictEqual(req.aborted, false);
|
|
res.write('hello');
|
|
}));
|
|
|
|
server.listen(0, common.mustCall(() => {
|
|
const req = http.get({
|
|
port: server.address().port,
|
|
headers: { connection: 'keep-alive' }
|
|
}, common.mustCall((res) => {
|
|
res.on('aborted', common.mustCall(() => {
|
|
assert.strictEqual(res.aborted, true);
|
|
}));
|
|
res.on('error', common.expectsError({
|
|
code: 'ECONNRESET',
|
|
message: 'aborted'
|
|
}));
|
|
req.abort();
|
|
}));
|
|
}));
|
|
}
|
|
|
|
{
|
|
// Don't crash if no 'error' handler on server request.
|
|
|
|
const server = http.createServer(common.mustCall(function(req, res) {
|
|
req.on('aborted', common.mustCall(function() {
|
|
assert.strictEqual(this.aborted, true);
|
|
server.close();
|
|
}));
|
|
assert.strictEqual(req.aborted, false);
|
|
res.write('hello');
|
|
}));
|
|
|
|
server.listen(0, common.mustCall(() => {
|
|
const req = http.get({
|
|
port: server.address().port,
|
|
headers: { connection: 'keep-alive' }
|
|
}, common.mustCall((res) => {
|
|
res.on('aborted', common.mustCall(() => {
|
|
assert.strictEqual(res.aborted, true);
|
|
}));
|
|
req.abort();
|
|
}));
|
|
}));
|
|
}
|