fix(frontend): add --disable-ipv6=true to generated aria2 command #3

Merged
starkSV merged 1 commit from fix-aria2-disable-ipv6 into main 2026-05-12 19:46:28 +05:30
starkSV commented 2026-05-12 19:37:44 +05:30 (Migrated from github.com)

Summary

  • Added --disable-ipv6=true to the aria2 command generated in Aria2Tip.tsx and referenced in FAQAccordion.tsx

Why

IPv6 failures (broken routing, disabled IPv6 at OS level, VPN or Pi-hole DNS setups) cause aria2 to abort with "unreachable network" instead of falling back to IPv4. The flag is a safe default on all network configurations — no downside on dual-stack or IPv4-only networks.

Files changed

  • frontend/src/components/Aria2Tip.tsx — generated command
  • frontend/src/components/FAQAccordion.tsx — FAQ example command

Summary by CodeRabbit

  • Documentation

    • Updated aria2 configuration examples in FAQ section.
  • Features

    • Modified aria2 command generation with updated network settings.

Review Change Stack

## Summary - Added `--disable-ipv6=true` to the aria2 command generated in `Aria2Tip.tsx` and referenced in `FAQAccordion.tsx` ## Why IPv6 failures (broken routing, disabled IPv6 at OS level, VPN or Pi-hole DNS setups) cause aria2 to abort with "unreachable network" instead of falling back to IPv4. The flag is a safe default on all network configurations — no downside on dual-stack or IPv4-only networks. ## Files changed - `frontend/src/components/Aria2Tip.tsx` — generated command - `frontend/src/components/FAQAccordion.tsx` — FAQ example command <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated aria2 configuration examples in FAQ section. * **Features** * Modified aria2 command generation with updated network settings. [![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/starkSV/windows-iso-downloader/pull/3) <!-- end of auto-generated comment: release notes by coderabbit.ai -->
coderabbitai[bot] commented 2026-05-12 19:38:43 +05:30 (Migrated from github.com)
📝 Walkthrough

Walkthrough

The PR updates aria2 command handling: Aria2Tip adds --disable-ipv6=true to its generated command string, while the FAQ documentation updates the aria2 example to reflect the correct configuration. Both changes relate to IPv6 settings in aria2c commands.

Changes

aria2 IPv6 configuration

Layer / File(s) Summary
IPv6 flag in aria2 command
frontend/src/components/Aria2Tip.tsx, frontend/src/components/FAQAccordion.tsx
Aria2Tip adds --disable-ipv6=true to the generated aria2c command while preserving -x 16 -s 16 parameters. The FAQ example command is updated to reflect the correct aria2 configuration guidance.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

A rabbit's ears twitch at IPv6 news—
The aria2 command gets a boost!
IPv6 now disabled with style,
And docs updated all the while. 🐰

🚥 Pre-merge checks | 4 | 1

Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed checks (4 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title accurately describes the main change: adding --disable-ipv6=true to the generated aria2 command in the frontend component.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-aria2-disable-ipv6

Comment @coderabbitai help to get the list of available commands and usage tips.

<!-- This is an auto-generated comment: summarize by coderabbit.ai --> <!-- walkthrough_start --> <details> <summary>📝 Walkthrough</summary> ## Walkthrough The PR updates aria2 command handling: `Aria2Tip` adds `--disable-ipv6=true` to its generated command string, while the FAQ documentation updates the aria2 example to reflect the correct configuration. Both changes relate to IPv6 settings in aria2c commands. ## Changes **aria2 IPv6 configuration** |Layer / File(s)|Summary| |---|---| |**IPv6 flag in aria2 command** <br> `frontend/src/components/Aria2Tip.tsx`, `frontend/src/components/FAQAccordion.tsx`|`Aria2Tip` adds `--disable-ipv6=true` to the generated aria2c command while preserving `-x 16 -s 16` parameters. The FAQ example command is updated to reflect the correct aria2 configuration guidance.| ## Estimated code review effort 🎯 1 (Trivial) | ⏱️ ~3 minutes ## Poem > A rabbit's ears twitch at IPv6 news— > The aria2 command gets a boost! > IPv6 now disabled with style, > And docs updated all the while. 🐰✨ </details> <!-- walkthrough_end --> <!-- pre_merge_checks_walkthrough_start --> <details> <summary>🚥 Pre-merge checks | ✅ 4 | ❌ 1</summary> ### ❌ Failed checks (1 warning) | Check name | Status | Explanation | Resolution | | :----------------: | :--------- | :----------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- | | Docstring Coverage | ⚠️ Warning | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. | <details> <summary>✅ Passed checks (4 passed)</summary> | Check name | Status | Explanation | | :------------------------: | :------- | :----------------------------------------------------------------------------------------------------------------------------------- | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title accurately describes the main change: adding --disable-ipv6=true to the generated aria2 command in the frontend component. | | Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | </details> <sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub> </details> <!-- pre_merge_checks_walkthrough_end --> <!-- finishing_touch_checkbox_start --> <details> <summary>✨ Finishing Touches</summary> <details> <summary>📝 Generate docstrings</summary> - [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> Create stacked PR - [ ] <!-- {"checkboxId": "3e1879ae-f29b-4d0d-8e06-d12b7ba33d98"} --> Commit on current branch </details> <details> <summary>🧪 Generate unit tests (beta)</summary> - [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Create PR with unit tests - [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Commit unit tests in branch `fix-aria2-disable-ipv6` </details> </details> <!-- finishing_touch_checkbox_end --> <!-- tips_start --> --- <sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub> <!-- tips_end --> <!-- internal state start --> <!-- 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 --> <!-- internal state end -->
coderabbitai[bot] (Migrated from github.com) reviewed 2026-05-12 19:40:58 +05:30
coderabbitai[bot] (Migrated from github.com) left a comment

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@frontend/src/components/Aria2Tip.tsx`:
- Line 15: The default aria2c command in the Aria2Tip component unconditionally
includes --disable-ipv6=true which breaks IPv6-only and DNS64/NAT64
environments; remove this flag from the command constant (the const command in
Aria2Tip.tsx) so the default becomes aria2c -x 16 -s 16 "${urlPlaceholder}", and
instead add UI text or an optional, clearly-labeled troubleshooting snippet that
shows --disable-ipv6=true as an optional flag users can try if they have
IPv4/DNS issues.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f2c32096-aeaa-4c8c-b785-99e05ff80eab

📥 Commits

Reviewing files that changed from the base of the PR and between 462b31a650 and 79e21bb487.

📒 Files selected for processing (2)
  • frontend/src/components/Aria2Tip.tsx
  • frontend/src/components/FAQAccordion.tsx
**Actionable comments posted: 1** <details> <summary>🤖 Prompt for all review comments with AI agents</summary> ``` Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. Inline comments: In `@frontend/src/components/Aria2Tip.tsx`: - Line 15: The default aria2c command in the Aria2Tip component unconditionally includes --disable-ipv6=true which breaks IPv6-only and DNS64/NAT64 environments; remove this flag from the command constant (the const command in Aria2Tip.tsx) so the default becomes aria2c -x 16 -s 16 "${urlPlaceholder}", and instead add UI text or an optional, clearly-labeled troubleshooting snippet that shows --disable-ipv6=true as an optional flag users can try if they have IPv4/DNS issues. ``` </details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro Plus **Run ID**: `f2c32096-aeaa-4c8c-b785-99e05ff80eab` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 462b31a650342413c23c232eddf8b03896e4fdc3 and 79e21bb4875914074984888398334076022afb37. </details> <details> <summary>📒 Files selected for processing (2)</summary> * `frontend/src/components/Aria2Tip.tsx` * `frontend/src/components/FAQAccordion.tsx` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
@ -14,3 +14,3 @@
const urlPlaceholder = downloadUrl || 'PASTE_YOUR_LINK_HERE'
const command = `aria2c -x 16 -s 16 "${urlPlaceholder}"`
const command = `aria2c -x 16 -s 16 --disable-ipv6=true "${urlPlaceholder}"`
coderabbitai[bot] (Migrated from github.com) commented 2026-05-12 19:40:57 +05:30

⚠️ Potential issue | 🟠 Major | Quick win

🧩 Analysis chain

🌐 Web query:

In aria2c, what is the exact behavior of --disable-ipv6=true, and does it prevent downloads on IPv6-only networks (including DNS64/NAT64 environments)?

💡 Result:

Behavior of --disable-ipv6=true: --disable-ipv6 disables IPv6 transport connections in aria2c (it “Disable[s] IPv6”; default is false). It is mainly intended to avoid slow/broken AAAA DNS handling. [1][2] Does it prevent downloads on IPv6-only networks (incl. DNS64/NAT64)? Yes, in the common sense: if aria2c is forced to not use IPv6 at all, then on an IPv6-only network where the destination is reachable only via IPv6, downloads cannot work because aria2c will not attempt IPv6 sockets. The aria2 manual/option text describes the option as disabling IPv6 connectivity. [1][2] For DNS64/NAT64 specifically: - In a DNS64/NAT64 environment, “IPv4-only” destinations are typically synthesized into IPv6 (AAAA) addresses that route via NAT64. If aria2c has --disable-ipv6=true, those synthesized IPv6 routes won’t be usable because IPv6 is disabled. Therefore, it will not successfully reach the synthesized NAT64 addresses. - aria2 may still download if and only if it can obtain and use an IPv4 address/route (for example, the network also provides real IPv4 connectivity and the target hostname resolves to usable A records, or the URI is already an explicit IPv4 address). In that case, the option doesn’t block IPv4; it only disables IPv6. (The option is described as disabling IPv6, not disabling IPv4.) [1][2] Caveat on fallback: aria2c sometimes fails to fall back between IPv4 and IPv6 on certain networks; an issue requests better “fallback and try again” behavior when one address family fails. That means on dual-stack or transition networks you may see outright failure patterns rather than clean automatic fallback to IPv4 when IPv6 is disabled/unreachable. [3] So the practical answer: on an IPv6-only network (and on DNS64/NAT64 where reaching the host requires using the synthesized IPv6 addresses), --disable-ipv6=true should prevent downloads. On networks that also provide working IPv4 (and where name resolution/URI selection yields usable IPv4 addresses), downloads may still work because only IPv6 is disabled. [1][2][3]

Citations:


Remove --disable-ipv6=true from the default command.

Line 15 unconditionally disables IPv6, which breaks downloads on IPv6-only networks and DNS64/NAT64 environments. The aria2c tool explicitly disables IPv6 transport with this flag, making synthesized IPv6 addresses (used in NAT64 scenarios) unreachable. Instead, use the default command without this flag and present --disable-ipv6=true as a troubleshooting option for users encountering IPv4 DNS issues.

Suggested direction
- const command = `aria2c -x 16 -s 16 --disable-ipv6=true "${urlPlaceholder}"`
+ const command = `aria2c -x 16 -s 16 "${urlPlaceholder}"`
+ const troubleshootingCommand = `aria2c -x 16 -s 16 --disable-ipv6=true "${urlPlaceholder}"`
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

  const command = `aria2c -x 16 -s 16 "${urlPlaceholder}"`
  const troubleshootingCommand = `aria2c -x 16 -s 16 --disable-ipv6=true "${urlPlaceholder}"`
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/Aria2Tip.tsx` at line 15, The default aria2c command
in the Aria2Tip component unconditionally includes --disable-ipv6=true which
breaks IPv6-only and DNS64/NAT64 environments; remove this flag from the command
constant (the const command in Aria2Tip.tsx) so the default becomes aria2c -x 16
-s 16 "${urlPlaceholder}", and instead add UI text or an optional,
clearly-labeled troubleshooting snippet that shows --disable-ipv6=true as an
optional flag users can try if they have IPv4/DNS issues.
_⚠️ Potential issue_ | _🟠 Major_ | _⚡ Quick win_ <details> <summary>🧩 Analysis chain</summary> 🌐 Web query: `In aria2c, what is the exact behavior of --disable-ipv6=true, and does it prevent downloads on IPv6-only networks (including DNS64/NAT64 environments)?` 💡 Result: Behavior of --disable-ipv6=true: --disable-ipv6 disables IPv6 transport connections in aria2c (it “Disable[s] IPv6”; default is false). It is mainly intended to avoid slow/broken AAAA DNS handling. [1][2] Does it prevent downloads on IPv6-only networks (incl. DNS64/NAT64)? Yes, in the common sense: if aria2c is forced to not use IPv6 at all, then on an IPv6-only network where the destination is reachable only via IPv6, downloads cannot work because aria2c will not attempt IPv6 sockets. The aria2 manual/option text describes the option as disabling IPv6 connectivity. [1][2] For DNS64/NAT64 specifically: - In a DNS64/NAT64 environment, “IPv4-only” destinations are typically synthesized into IPv6 (AAAA) addresses that route via NAT64. If aria2c has --disable-ipv6=true, those synthesized IPv6 routes won’t be usable because IPv6 is disabled. Therefore, it will not successfully reach the synthesized NAT64 addresses. - aria2 may still download if and only if it can obtain and use an IPv4 address/route (for example, the network also provides real IPv4 connectivity and the target hostname resolves to usable A records, or the URI is already an explicit IPv4 address). In that case, the option doesn’t block IPv4; it only disables IPv6. (The option is described as disabling IPv6, not disabling IPv4.) [1][2] Caveat on fallback: aria2c sometimes fails to fall back between IPv4 and IPv6 on certain networks; an issue requests better “fallback and try again” behavior when one address family fails. That means on dual-stack or transition networks you may see outright failure patterns rather than clean automatic fallback to IPv4 when IPv6 is disabled/unreachable. [3] So the practical answer: on an IPv6-only network (and on DNS64/NAT64 where reaching the host requires using the synthesized IPv6 addresses), --disable-ipv6=true should prevent downloads. On networks that also provide working IPv4 (and where name resolution/URI selection yields usable IPv4 addresses), downloads may still work because only IPv6 is disabled. [1][2][3] Citations: - 1: https://aria2.github.io/manual/en/html/aria2c.html - 2: https://manpages.ubuntu.com/manpages/jammy/man1/aria2c.1.html - 3: https://github.com/aria2/aria2/issues/2158 --- </details> **Remove `--disable-ipv6=true` from the default command.** Line 15 unconditionally disables IPv6, which breaks downloads on IPv6-only networks and DNS64/NAT64 environments. The `aria2c` tool explicitly disables IPv6 transport with this flag, making synthesized IPv6 addresses (used in NAT64 scenarios) unreachable. Instead, use the default command without this flag and present `--disable-ipv6=true` as a troubleshooting option for users encountering IPv4 DNS issues. <details> <summary>Suggested direction</summary> ```diff - const command = `aria2c -x 16 -s 16 --disable-ipv6=true "${urlPlaceholder}"` + const command = `aria2c -x 16 -s 16 "${urlPlaceholder}"` + const troubleshootingCommand = `aria2c -x 16 -s 16 --disable-ipv6=true "${urlPlaceholder}"` ``` </details> <!-- suggestion_start --> <details> <summary>📝 Committable suggestion</summary> > ‼️ **IMPORTANT** > Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements. ```suggestion const command = `aria2c -x 16 -s 16 "${urlPlaceholder}"` const troubleshootingCommand = `aria2c -x 16 -s 16 --disable-ipv6=true "${urlPlaceholder}"` ``` </details> <!-- suggestion_end --> <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/components/Aria2Tip.tsx` at line 15, The default aria2c command in the Aria2Tip component unconditionally includes --disable-ipv6=true which breaks IPv6-only and DNS64/NAT64 environments; remove this flag from the command constant (the const command in Aria2Tip.tsx) so the default becomes aria2c -x 16 -s 16 "${urlPlaceholder}", and instead add UI text or an optional, clearly-labeled troubleshooting snippet that shows --disable-ipv6=true as an optional flag users can try if they have IPv4/DNS issues. ``` </details> <!-- fingerprinting:phantom:poseidon:hawk --> <!-- 4e71b3a2 --> <!-- This is an auto-generated comment by CodeRabbit -->
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: shekhar/windows-iso-downloader#3
No description provided.