Skip to content

Download fails immediately on Apple IPSW (updates.cdn-apple.com) after Add dialog shows Ready #35

Open

Description

@aliafshany

Summary

Downloading a large Apple IPSW from updates.cdn-apple.com ends in Failed as soon as download starts. The Add download (properties / location) dialog first reports the link as Ready with no error; failure only appears after pressing Start downloading.

URL

https://updates.cdn-apple.com/2026SummerFCS/fullrestores/140-58447/B097FD44-AF14-43CE-BEC0-CE218A859ADC/iPhone17,2_26.6_23G71_Restore.ipsw
  • Host: updates.cdn-apple.com
  • File: iPhone17,2_26.6_23G71_Restore.ipsw (multi‑GB firmware restore package)

Steps to reproduce

  1. Copy / add the IPSW URL above into Firelink.
  2. Open the properties / location (Add download) window.
  3. Observe status: link resolves as Ready (filename / size appear OK; no error).
  4. Confirm destination and press Start downloading.

Expected behavior

  • Download should start (or resume) and progress normally, or show a clear, actionable error if the remote rejects the request (HTTP status, auth, range support, etc.).

Actual behavior

  1. Add / properties window: Ready — no problem reported.
  2. After Start downloading: entry immediately goes to Failed state.
  3. No successful transfer; failure happens at start rather than mid-download.

Notes

  • Metadata probe / preflight in the Add dialog appears to succeed (Ready), but the actual aria2 (or transfer) start path fails.
  • Possible angles (unconfirmed):
    • Large file / long path or special characters (comma in iPhone17,2_…)
    • Apple CDN headers, redirects, or range-request behavior differing between HEAD/metadata and GET
    • User-Agent / missing headers required only on the real download request
    • Timeout or connection limits on multi‑GB start
  • Would help debugging: full error text from the Failed row / logs (aria2 error code/message) if available in UI or log file.

Environment

  • App: Firelink (desktop)
  • OS: macOS
  • Scenario: direct HTTPS download of Apple full-restore IPSW from updates.cdn-apple.com

Happy to attach screenshots, Firelink logs, or try a debug build if useful.

Activity

  1. nimbold commented on Aug 3, 2026

    @nimbold
    Owner

    Hi,
    I produced the exact steps and mine is downloading without any issue:

    Image

    Please Follow these steps:

    • Tools > Logs > Clear all and Then Start a new log
    • Start reproducing the problem: Pasting download link, and starting it
    • Wait till you get the error
    • Export logs and share it here so I could track where exactly the error occurs
  2. aliafshany commented on Aug 5, 2026

    @aliafshany
    Author

    Update / root cause (reproduced)

    This is not specific to the Apple IPSW URL. With Streisand (macOS Network Extension PacketTunnel) enabled, downloads fail immediately after the Add dialog shows Ready.

    Failure mode

    Step Component Result
    Add URL Metadata preflight (reqwest → system getaddrinfo / mDNSResponder) Ready
    Start download Bundled aria2 (Async DNS) Failed immediately

    Exact aria2 error (reproduced against Firelink’s live RPC while Streisand was active):

    aria2 error code 19:
    Name resolution for updates.cdn-apple.com failed: Could not contact DNS servers
    

    The same class of error also hit other hosts under Streisand (e.g. real-debrid: Name resolution for … failed: Could not contact DNS servers). So this is a general DNS-stack issue, not IPSW-specific.

    Environment evidence (macOS)

    • Streisand running as PacketTunnel.appex → traffic default-routed via utun7
    • Unscoped system DNS broken while the tunnel is up:
      • scutil --dns: primary resolver reach: Not Reachable
      • dig updates.cdn-apple.com → connection timed out; no servers could be reached
    • System/app path still works:
      • dscacheutil / mDNSResponder resolves the host
      • curl HEAD/Range to the same IPSW returns 200/206 through the tunnel
    • Firelink proxy mode is none — not an HTTP proxy problem. Streisand is L3 tunnel routing; turning off Firelink’s proxy setting cannot bypass it.

    Why Ready ≠ download

    Different DNS stacks:

    1. Add dialog uses system resolver path → succeeds when mDNSResponder/cache still works.
    2. aria2 reports feature Async DNS and fails with error 19 when it cannot contact DNS servers (unscoped resolvers dead under the PacketTunnel).

    Workarounds (user side)

    1. Disable Streisand (or split-tunnel / direct route) for the download host while transferring large files.
    2. Fix Streisand DNS so unscoped resolvers are reachable (working DNS over the tunnel; IPv4 resolvers such as 1.1.1.1 answered when queried explicitly; tunnel-configured IPv6-only DNS timed out in testing).

    Possible product improvements

    1. Surface aria2 error 19 clearly in the UI (e.g. “DNS resolution failed — check VPN/DNS”), instead of a bare Failed state.
    2. Optional robustness: when Async DNS cannot contact servers, fall back to system getaddrinfo, async-dns=false, or configurable explicit DNS servers for the aria2 sidecar.
    3. Docs note: PacketTunnel VPNs that break unscoped DNS will break aria2-backed downloads even when the browser and Firelink’s Ready check still work.

    Happy to provide more logs or retest a build.

  3. aliafshany commented on Aug 5, 2026

    @aliafshany
    Author

    Follow-up: fixed by changing Streisand DNS

    After switching Streisand Settings → DNS to:

    • DoU: 1.1.1.1 (DNS over plain UDP to Cloudflare)

    and restarting the tunnel (as Streisand notes), downloads work again — including the Apple IPSW case.

    Previously the tunnel’s DNS setup left unscoped system resolvers unreachable, so aria2 failed with error 19 (Could not contact DNS servers) while the Add dialog still showed Ready.

    Takeaway for others hitting this: if Firelink fails immediately under a PacketTunnel VPN (Streisand, etc.) with a DNS-related aria2 error, try a working DoU/DoH/DoT resolver in the VPN app (e.g. 1.1.1.1 or 8.8.8.8) and restart the tunnel. That restores DNS for aria2 without changing Firelink proxy settings.

    This doesn’t change the product suggestions above (clearer error 19 UI / more resilient DNS for the aria2 sidecar), but confirms the root cause was tunnel DNS configuration, not the IPSW host itself.

  4. nimbold commented on Aug 5, 2026

    @nimbold
    Owner

    Thanks for the log. Confirmed this is a real issue caused by Aria2’s separate asynchronous DNS resolver.

    • Firelink now retries the affected download once using the system resolver, without changing global DNS or VPN settings.
    • The fix applies to normal downloads and Torrents (available in the next release), while preserving proxies, headers, resume state, and lifecycle safety.
    • I added error handling, persistence protection, regression tests, and cross-platform CI smoke checks. The changes are pushed to main in commit c120222.

    It will be included in the next release.

  5. nimbold commented on Sep 8, 2026

    @nimbold
    Owner

    Please test the new version (1.4.2) and report if the DNS problem is fixed. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingquestionFurther information is requested

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions