From 6ee98328fbfd4884b0a2f57a76d8a2a35ad28834 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Tue, 3 Mar 2026 21:28:47 +0100 Subject: [PATCH] Fix JVM extractor not falling back to legacy UnRAR on codec errors When SevenZipJBinding reports "Archive file can't be opened with any of the registered codecs", the extractor now falls back to legacy UnRAR instead of failing immediately. Previously, backend mode "jvm" (the production default) only allowed fallback for UNSUPPORTEDMETHOD. Co-Authored-By: Claude Opus 4.6 --- package.json | 2 +- src/main/extractor.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2a92db3..ce83e13 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "real-debrid-downloader", - "version": "1.5.68", + "version": "1.5.69", "description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)", "main": "build/main/main/main.js", "author": "Sucukdeluxe", diff --git a/src/main/extractor.ts b/src/main/extractor.ts index c0b1d64..bece033 100644 --- a/src/main/extractor.ts +++ b/src/main/extractor.ts @@ -1289,12 +1289,19 @@ async function runExternalExtract( } jvmFailureReason = jvmResult.errorText || "JVM-Extractor fehlgeschlagen"; + const jvmFailureLower = jvmFailureReason.toLowerCase(); const isUnsupportedMethod = jvmFailureReason.includes("UNSUPPORTEDMETHOD"); - if (backendMode === "jvm" && !isUnsupportedMethod) { + const isCodecError = jvmFailureLower.includes("registered codecs") + || jvmFailureLower.includes("can not open") + || jvmFailureLower.includes("cannot open archive"); + const shouldFallbackToLegacy = isUnsupportedMethod || isCodecError; + if (backendMode === "jvm" && !shouldFallbackToLegacy) { throw new Error(jvmFailureReason); } if (isUnsupportedMethod) { logger.warn(`JVM-Extractor: Komprimierungsmethode nicht unterstützt, fallback auf Legacy: ${path.basename(archivePath)}`); + } else if (isCodecError) { + logger.warn(`JVM-Extractor: Archiv-Format nicht erkannt, fallback auf Legacy: ${path.basename(archivePath)}`); } else { logger.warn(`JVM-Extractor Fehler, fallback auf Legacy: ${jvmFailureReason}`); }