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: https://github.com/nodejs/node/pull/18866 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
parent
ffab6cd505
commit
2b7f920e26
@ -37,7 +37,7 @@ const { OutgoingMessage } = require('_http_outgoing');
|
|||||||
const Agent = require('_http_agent');
|
const Agent = require('_http_agent');
|
||||||
const { Buffer } = require('buffer');
|
const { Buffer } = require('buffer');
|
||||||
const { urlToOptions, searchParamsSymbol } = require('internal/url');
|
const { urlToOptions, searchParamsSymbol } = require('internal/url');
|
||||||
const { outHeadersKey } = require('internal/http');
|
const { outHeadersKey, ondrain } = require('internal/http');
|
||||||
const { nextTick } = require('internal/process/next_tick');
|
const { nextTick } = require('internal/process/next_tick');
|
||||||
const errors = require('internal/errors');
|
const errors = require('internal/errors');
|
||||||
|
|
||||||
@ -424,6 +424,7 @@ function socketOnData(d) {
|
|||||||
|
|
||||||
socket.removeListener('data', socketOnData);
|
socket.removeListener('data', socketOnData);
|
||||||
socket.removeListener('end', socketOnEnd);
|
socket.removeListener('end', socketOnEnd);
|
||||||
|
socket.removeListener('drain', ondrain);
|
||||||
parser.finish();
|
parser.finish();
|
||||||
freeParser(parser, req, socket);
|
freeParser(parser, req, socket);
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@ server.listen(0, common.mustCall(() => {
|
|||||||
assert.strictEqual(socket._httpMessage, null);
|
assert.strictEqual(socket._httpMessage, null);
|
||||||
assert.strictEqual(socket.listeners('connect').length, 0);
|
assert.strictEqual(socket.listeners('connect').length, 0);
|
||||||
assert.strictEqual(socket.listeners('data').length, 0);
|
assert.strictEqual(socket.listeners('data').length, 0);
|
||||||
|
assert.strictEqual(socket.listeners('drain').length, 0);
|
||||||
|
|
||||||
// the stream.Duplex onend listener
|
// the stream.Duplex onend listener
|
||||||
// allow 0 here, so that i can run the same test on streams1 impl
|
// allow 0 here, so that i can run the same test on streams1 impl
|
||||||
|
Loading…
x
Reference in New Issue
Block a user