Skip to content

Commit 51be03c

Browse files
lpincaBridgeAR
authored andcommitted
http: remove default 'error' listener on upgrade
Remove the default `'error'` listener when the socket is freed. This is consistent with the client and prevents spurious `'clientError'` events from being emitted on the server. PR-URL: #18868 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Joyee Cheung <[email protected]>
1 parent d6fc7e3 commit 51be03c

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

lib/_http_server.js

+1
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,7 @@ function onParserExecuteCommon(server, socket, parser, state, ret, d) {
521521
socket.removeListener('close', state.onClose);
522522
socket.removeListener('drain', state.onDrain);
523523
socket.removeListener('drain', ondrain);
524+
socket.removeListener('error', socketOnError);
524525
unconsume(parser, socket);
525526
parser.finish();
526527
freeParser(parser, req, null);

test/parallel/test-http-connect.js

+7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ server.on('connect', common.mustCall((req, socket, firstBodyChunk) => {
3030
assert.strictEqual(req.method, 'CONNECT');
3131
assert.strictEqual(req.url, 'google.com:443');
3232

33+
// Make sure this socket has detached.
34+
assert.strictEqual(socket.listeners('close').length, 0);
35+
assert.strictEqual(socket.listeners('drain').length, 0);
36+
assert.strictEqual(socket.listeners('data').length, 0);
37+
assert.strictEqual(socket.listeners('end').length, 1);
38+
assert.strictEqual(socket.listeners('error').length, 0);
39+
3340
socket.write('HTTP/1.1 200 Connection established\r\n\r\n');
3441

3542
let data = firstBodyChunk.toString();

0 commit comments

Comments
 (0)