From 7d0f6be9d115f307d3ae0abf9de1ea0dc0aac0ad Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Tue, 9 Sep 2025 21:23:09 +0200 Subject: [PATCH] http: unbreak keepAliveTimeoutBuffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a guard. PR-URL: https://github.com/nodejs/node/pull/59784 Reviewed-By: Gerhard Stöbich Reviewed-By: Rafael Gonzaga --- lib/_http_server.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/_http_server.js b/lib/_http_server.js index c5681725ca..322793f012 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -1027,11 +1027,16 @@ function resOnFinish(req, res, socket, state, server) { socket.end(); } } else if (state.outgoing.length === 0) { - if (server.keepAliveTimeout && typeof socket.setTimeout === 'function') { + const keepAliveTimeout = NumberIsFinite(server.keepAliveTimeout) && server.keepAliveTimeout >= 0 ? + server.keepAliveTimeout : 0; + const keepAliveTimeoutBuffer = NumberIsFinite(server.keepAliveTimeoutBuffer) && server.keepAliveTimeoutBuffer >= 0 ? + server.keepAliveTimeoutBuffer : 1e3; + + if (keepAliveTimeout && typeof socket.setTimeout === 'function') { // Extend the internal timeout by the configured buffer to reduce // the likelihood of ECONNRESET errors. // This allows fine-tuning beyond the advertised keepAliveTimeout. - socket.setTimeout(server.keepAliveTimeout + server.keepAliveTimeoutBuffer); + socket.setTimeout(keepAliveTimeout + keepAliveTimeoutBuffer); state.keepAliveTimeoutSet = true; } } else {