Skip to content

Commit 6bfdba1

Browse files
lpincaMylesBorins
authored andcommitted
http: remove default 'drain' listener on upgrade
Ensure that the default `'drain'` listener is removed before the `'connect'` or `'upgrade'` event is emitted. PR-URL: #18866 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
1 parent 42b4f3c commit 6bfdba1

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

lib/_http_client.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const { OutgoingMessage } = require('_http_outgoing');
3737
const Agent = require('_http_agent');
3838
const { Buffer } = require('buffer');
3939
const { urlToOptions, searchParamsSymbol } = require('internal/url');
40-
const { outHeadersKey } = require('internal/http');
40+
const { outHeadersKey, ondrain } = require('internal/http');
4141
const { nextTick } = require('internal/process/next_tick');
4242

4343
// The actual list of disallowed characters in regexp form is more like:
@@ -452,6 +452,7 @@ function socketOnData(d) {
452452

453453
socket.removeListener('data', socketOnData);
454454
socket.removeListener('end', socketOnEnd);
455+
socket.removeListener('drain', ondrain);
455456
parser.finish();
456457
freeParser(parser, req, socket);
457458

test/parallel/test-http-connect.js

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ server.listen(0, common.mustCall(() => {
6767
assert.strictEqual(socket._httpMessage, null);
6868
assert.strictEqual(socket.listeners('connect').length, 0);
6969
assert.strictEqual(socket.listeners('data').length, 0);
70+
assert.strictEqual(socket.listeners('drain').length, 0);
7071

7172
// the stream.Duplex onend listener
7273
// allow 0 here, so that i can run the same test on streams1 impl

0 commit comments

Comments
 (0)