From 9c6134d5dc3fdd01f62376ef9d7512288cc70ce8 Mon Sep 17 00:00:00 2001 From: Hoan Luu Huu <110280845+xquanluu@users.noreply.github.com> Date: Tue, 11 Nov 2025 19:44:18 +0700 Subject: [PATCH] fixed Array.prototype.push.apply will throw Maximum call stack size exceeded (#119) * fixed Array.prototype.push.apply will throw Maximum call stack size exceeded * fixed review comment --- lib/sip-trunk-register.js | 10 ++++++++-- package-lock.json | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/sip-trunk-register.js b/lib/sip-trunk-register.js index caace5a..cadadff 100644 --- a/lib/sip-trunk-register.js +++ b/lib/sip-trunk-register.js @@ -223,11 +223,17 @@ const updateCarrierRegbots = async(logger, srf) => { debug('updateCarrierRegbots: got new or changed carriers'); logger.info({gws}, 'updateCarrierRegbots: got new or changed carriers'); + + // Clear and repopulate arrays in chunks to avoid argument limit carriers.length = 0; - Array.prototype.push.apply(carriers, cs); + for (let i = 0; i < cs.length; i += 1000) { + Array.prototype.push.apply(carriers, cs.slice(i, i + 1000)); + } gateways.length = 0; - Array.prototype.push.apply(gateways, gws); + for (let i = 0; i < gws.length; i += 1000) { + Array.prototype.push.apply(gateways, gws.slice(i, i + 1000)); + } // stop / kill existing regbots regbots.forEach((rb) => rb.stop(srf)); diff --git a/package-lock.json b/package-lock.json index 4c34a3d..add2fe7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "tape": "^5.7.5" }, "engines": { - "node": ">= 18.0.0" + "node": ">= 20.0.0" } }, "node_modules/@ampproject/remapping": {