From ef2bebe755185d7477457f502ac252bbad7fa514 Mon Sep 17 00:00:00 2001 From: Timofey Gelazoniya Date: Sun, 15 Jun 2025 00:18:55 +0300 Subject: [PATCH] fix: only perform cleanup and fire the callback on the first error --- lib/bedrock.js | 3 +-- lib/java.js | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/bedrock.js b/lib/bedrock.js index 848dad8..7154a58 100644 --- a/lib/bedrock.js +++ b/lib/bedrock.js @@ -113,10 +113,9 @@ const ping = (host, port = 19132, cb, timeout = 5000) => { * @param {Error} err The error that occurred. */ const handleError = (err) => { - closeSocket(); - if (!didFireError) { didFireError = true; + closeSocket(); cb(null, err); } }; diff --git a/lib/java.js b/lib/java.js index 428a266..ef0cd7d 100644 --- a/lib/java.js +++ b/lib/java.js @@ -17,7 +17,14 @@ import varint from "./varint.js"; * @param {number} [timeout=5000] The timeout duration in milliseconds. * @param {number} [protocolVersion=-1] The protocol version of the Java client. */ -function ping(host, virtualHost, port = 25565, cb, timeout = 5000, protocolVersion = -1) { +function ping( + host, + virtualHost, + port = 25565, + cb, + timeout = 5000, + protocolVersion = -1 +) { const socket = net.createConnection({ host, port }); // Set manual timeout interval. @@ -41,10 +48,9 @@ function ping(host, virtualHost, port = 25565, cb, timeout = 5000, protocolVersi * @param {Error} err The error that occurred. */ const handleError = (err) => { - closeSocket(); - if (!didFireError) { didFireError = true; + closeSocket(); cb(null, err); } }; @@ -132,7 +138,12 @@ function ping(host, virtualHost, port = 25565, cb, timeout = 5000, protocolVersi export function pingJava(host, options = {}) { if (!host) throw new Error("Host argument is not provided"); - const { port = 25565, timeout = 5000, protocolVersion = -1, virtualHost = null } = options; + const { + port = 25565, + timeout = 5000, + protocolVersion = -1, + virtualHost = null, + } = options; return new Promise((resolve, reject) => { ping(