From bdf07f4317ce738bbe56c5b91aaebf35d15052a8 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Sun, 11 Aug 2019 11:09:40 +0200 Subject: http: simplify drain() Simplify and slightly optimize draining outgoing http streams. Avoid extra event listener and inline with rest of the drain logic. PR-URL: https://github.com/nodejs/node/pull/29081 Reviewed-By: Matteo Collina --- lib/_http_server.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'lib/_http_server.js') diff --git a/lib/_http_server.js b/lib/_http_server.js index b083983c94..2c48ab9191 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -32,7 +32,6 @@ const { CRLF, continueExpression, chunkExpression, - httpSocketSetup, kIncomingMessage, HTTPParser, _checkInvalidHeaderChar: checkInvalidHeaderChar, @@ -41,7 +40,7 @@ const { const { OutgoingMessage } = require('_http_outgoing'); const { kOutHeaders, - ondrain, + kNeedDrain, nowDate, emitStatistics } = require('internal/http'); @@ -359,8 +358,6 @@ function connectionListener(socket) { function connectionListenerInternal(server, socket) { debug('SERVER new http connection'); - httpSocketSetup(socket); - // Ensure that the server property of the socket is correctly set. // See https://github.com/nodejs/node/issues/13435 if (socket.server === null) @@ -455,6 +452,12 @@ function socketOnDrain(socket, state) { socket.parser.resume(); socket.resume(); } + + const msg = socket._httpMessage; + if (msg && !msg.finished && msg[kNeedDrain]) { + msg[kNeedDrain] = false; + msg.emit('drain'); + } } function socketOnTimeout() { @@ -581,7 +584,6 @@ function onParserExecuteCommon(server, socket, parser, state, ret, d) { socket.removeListener('end', state.onEnd); socket.removeListener('close', state.onClose); socket.removeListener('drain', state.onDrain); - socket.removeListener('drain', ondrain); socket.removeListener('error', socketOnError); socket.removeListener('timeout', socketOnTimeout); unconsume(parser, socket); -- cgit v1.2.3