From 6b0e600ac7e015f222fdcfefa2d4892f21dffeea Mon Sep 17 00:00:00 2001 From: SukkaW Date: Sun, 19 Oct 2025 01:27:35 +0800 Subject: [PATCH] Perf: avoid copying memory when decoding telegrm config --- Build/lib/get-telegram-backup-ip.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Build/lib/get-telegram-backup-ip.ts b/Build/lib/get-telegram-backup-ip.ts index 1b38032a..c8366e9c 100644 --- a/Build/lib/get-telegram-backup-ip.ts +++ b/Build/lib/get-telegram-backup-ip.ts @@ -25,7 +25,7 @@ export function getTelegramBackupIPFromBase64(base64: string) { } // 2. Filter to base64 and check length - // Not needed with Buffer.from + // Not needed with base64ToUint8Array, it has built-in base64-able checking // 3. Decode base64 to Buffer const decoded = base64ToUint8Array(base64); @@ -76,7 +76,7 @@ export function getTelegramBackupIPFromBase64(base64: string) { throw new Error('SHA256 hash mismatch'); } - const parser = new TgExtensions.BinaryReader(Buffer.from(decryptedCbc)); + const parser = new TgExtensions.BinaryReader(Buffer.from(decryptedCbc.buffer, decryptedCbc.byteOffset, decryptedCbc.byteLength)); const len = parser.readInt(); if (len < 8 || len > 208) throw new Error(`Invalid TL data length: ${len}`); @@ -88,7 +88,7 @@ export function getTelegramBackupIPFromBase64(base64: string) { const payload = decryptedCbc.subarray(8, len); - const configSimple = Api.help.ConfigSimple.fromReader(new TgExtensions.BinaryReader(Buffer.from(payload))); + const configSimple = Api.help.ConfigSimple.fromReader(new TgExtensions.BinaryReader(Buffer.from(payload.buffer, payload.byteOffset, payload.byteLength))); return configSimple.rules.flatMap(rule => rule.ips.map(ip => { switch (ip.CONSTRUCTOR_ID) {