Files
readest/apps/readest-app/.claude/memory/opds-autodownload-tls-skipssl-4988.md
T
Huang Xin 4af203755d
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
CodeQL Advanced / Analyze (rust) (push) Waiting to run
Publish Docker image / build (linux/amd64, ubuntu-latest) (push) Waiting to run
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Publish Docker image / merge (push) Blocked by required conditions
PR checks / rust_lint (push) Waiting to run
PR checks / build_web_app (push) Waiting to run
PR checks / test_web_app (1) (push) Waiting to run
PR checks / test_web_app (2) (push) Waiting to run
PR checks / test_extensions (push) Waiting to run
PR checks / build_tauri_app (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Deploy to vercel on merge / build_and_deploy (push) Waiting to run
release: version 0.11.18 (#5003)
2026-07-07 20:17:35 +02:00

1.8 KiB

name, description, metadata
name description metadata
opds-autodownload-tls-skipssl-4988 #4988 OPDS auto-download failed on self-signed/private-CA servers — native download_file (rustls) needs skipSslVerification like the manual path (#2900)
node_type type originSessionId
memory project 9066b80b-3cb5-44df-9c4b-7f609cf285a5

Issue #4988: OPDS auto-download failed while manual browse/download of the same catalog worked (reporter: iPad + Calibre-Web NextGen behind nginx https). Reporter blamed the credential-less HEAD probes — red herring: those are probeAuth challenge probes, their 401 is by design and the Basic header still reaches the GET.

Real signature: feed GETs and HEAD probes appear in the server log, download GETs never do → the native download_file dies client-side in the TLS handshake. The Tauri http-plugin path (opdsReq.ts) always passes danger: {acceptInvalidCerts: true}, but transfer_file.rs builds its reqwest client with rustls, which ignores the OS trust store — self-signed, private-CA, or incomplete-chain certs all fail unless skip_ssl_verification is set. Manual download (page.tsx handleDownload) got skipSslVerification: true in #2900 (for #2871); autoDownload.ts downloadAndImport never did.

Fix (2026-07-08, PR #5002): pass skipSslVerification: true in autoDownload's downloadFile call. Test in opds-auto-download.test.ts.

How to apply: any new code path that downloads via native download_file/tauriDownload from a user-configured server must mirror the manual path's skipSslVerification — TLS behavior differs between the http plugin (danger flags on) and transfer_file (strict rustls by default), so "browse works but download fails, nothing in server logs" = check this first. "curl works without -k" on another machine proves nothing about rustls trust.