Konstantin Ostrovskii and Levi
a34383a7e2
fix(http): wait for the prefetch goroutine to exit before reusing its file ( #1606 )
...
* fix(http): wait for the prefetch goroutine to exit before reusing its file
stopPrefetchAndCopyData waited at most 10 s for the Resolve prefetch, but a
stalled body read only times out after readTimeout (15 s). The caller then
closed and removed the temporary file while the prefetch goroutine could
still write to it.
Stopping the prefetch now closes the Resolve body, which interrupts a
pending read, and waits on a channel closed when the goroutine exits. Pause
uses the same path. The stop channel is closed under resolveRespLock so a
concurrent Pause and first-connection takeover cannot close it twice.
The proxy test helper now calls Setup before Resolve, as the downloader
does, so the Resolve request also goes through the proxy.
Fixes #1563
* refactor(http): wait on prefetchExitCh in completeFromResolveFallback
Replaces the 10 ms polling loop with the exit channel added in the
previous commit, so every place that waits for the prefetch uses it.
---------
Co-authored-by: Levi <[email protected] >
2026-11-09 11:14:49 +08:00
Levi
d125d4ab75
feat(http): support advisory extension download sizes ( #1599 )
2026-10-22 23:35:01 +08:00
Levi
de65149b29
refactor(downloader): remove opts parameter from Resolve ( #1595 )
2026-10-19 21:40:57 +08:00
Levi
c6619794fc
fix: preserve Cookie headers in extension requests ( #1581 )
2026-10-10 22:10:08 +08:00
Wu Shuwen
04b9aa18ec
fix(http): infer extension for opaque URLs ( #1495 )
2026-09-11 08:01:32 +08:00
Levi
177c225f16
feat: new ui ( #1455 )
2026-09-05 19:53:41 +08:00
Levi
3be8db664c
fix(http): resume ranged downloads with unknown size ( #1467 )
2026-09-03 23:16:38 +08:00
Levi
9b704f6f14
fix(http): keep Resolve response until Range takeover succeeds ( #1465 )
2026-09-02 23:49:37 +08:00
ggg
f49e2510f5
fix(http): re-probe range support after sequential retry ( #1464 )
2026-09-02 14:29:48 +08:00
Levi
c5c8bb2bf5
fix(http): reset discarded prefetch progress on resume ( #1462 )
2026-08-31 23:05:01 +08:00
ggg
962ff4dc98
fix(http): fall back when servers ignore range requests ( #1459 )
2026-08-31 22:32:14 +08:00
Levi
59f3aa7028
test: enforce async extension API contract ( #1452 )
2026-08-27 12:51:37 +08:00
Levi
cfdf87c3b8
feat: HTTP add TLS fingerprint fallback ( #1444 )
2026-08-20 20:21:02 +08:00
Levi
def54f8998
feat: add WebView support for extension ( #1359 )
2026-04-24 22:16:33 +08:00
Levi
847e88881d
fix: non-range HTTP downloaded bytes exceeding total file size ( #1317 )
2026-03-18 18:53:49 +08:00
Levi
3eb6df55df
feat: implement task patching functionality ( #1267 )
2026-02-06 23:42:57 +08:00
Levi
93088b22f1
fix: improve retry handling for expired HTTP redirect url ( #1263 )
2026-01-29 22:13:42 +08:00
Levi
a9eee26be7
refactor: fethcer interface & download flow ( #1229 )
2026-01-08 21:50:47 +08:00
Copilot
abd16d5326
fix: filename truncation for HTML-encoded ampersands in Content-Disposition ( #1215 )
2026-01-05 22:56:04 +08:00
Copilot
6756d82ffa
fix: use PathUnescape for filename URL decoding ( #1214 )
2026-01-05 21:46:50 +08:00
Matteo Pietro Dazzi
b0e133b554
feat: show extraction progress ( #1217 )
2025-12-31 09:25:21 +08:00
Copilot
2f5fbfb17c
fix: HTTP filename parsing for mixed encodings and GBK-encoded ( #1189 )
2025-11-29 11:34:50 +08:00
Levi
3451f577ab
fix: remove invalid characters in HTTP headers ( #1053 )
2025-07-15 22:34:10 +08:00
Levi
cd5fd45667
fix: resolve http non encode attachment filename ( #975 )
2025-04-05 22:37:19 +08:00
Levi
50bc9ab129
feat: improve http download strategy to prevent speed drops near completion ( #969 )
2025-04-05 22:20:35 +08:00
Levi
f4b839fd11
fix: http download size exceeds file size ( #959 )
2025-03-14 20:07:34 +08:00
Levi
9c5aebaf36
fix: path url encode filename parse ( #939 )
2025-02-18 19:37:38 +08:00
Levi
fba990a056
fix: http MIME encoded word filename parse ( #931 )
2025-02-13 21:54:13 +08:00
Levi
0919936050
feat: support custom http request headers ( #868 )
2025-01-16 00:19:50 +08:00
Levi
c970378fd7
fix: http download retries too many times ( #849 )
2024-12-24 20:28:04 +08:00
Levi
0c17093b1a
feat: task separate proxy ( #727 )
2024-09-06 18:35:23 +08:00
Levi
ece5b91dc2
fix: torrent redundant directory ( #649 )
2024-08-14 21:54:59 +08:00
Levi
4fbe13a1f0
fix: clear UPNP port mapping when exist app ( #624 )
2024-07-30 18:43:54 +08:00
Levi
3b50465708
feat: torrent seed config ( #599 )
2024-07-30 12:50:06 +08:00
Levi
cea454b015
feat: support system proxy ( #515 )
2024-05-01 18:53:12 +08:00
Levi
62c22bc6b4
feat: support use server time for file creation ( #359 )
2024-01-30 09:08:01 +08:00
Levi
16b7a3d5b3
feat: support proxy ( #284 )
2023-12-02 18:36:52 +08:00
Levi
6bb32372ab
feat: support more configurations ( #281 )
2023-11-29 12:52:51 +08:00
Levi
7d6428c967
fix: task can not completed ( #280 )
2023-11-28 18:27:36 +08:00
Levi
39202b44a1
fix: http retry strategy ( #240 )
2023-10-20 12:15:21 +08:00
Levi
c073fc0a67
feat: extension support ( #78 )
2023-10-16 09:47:31 +08:00
Li Wei
34fc886662
fix: http filename resolve ( #124 )
2023-06-28 10:22:45 +08:00
Li Wei
dd46e7a3eb
fix: crash caused by non-resumable http download resources ( #97 )
2023-03-06 21:09:31 +08:00
liwei
a875a9258e
refactor: change repo url
2023-02-11 21:37:05 +08:00
Li Wei
1a3c8c026b
feat: reuse fetcher ( #71 )
2023-02-06 20:58:13 +08:00
Li Wei
0a4be165a5
fix: http download fail ( #61 )
2022-12-14 12:12:39 +08:00
Li Wei
691c2f496e
feat: support custom tracker url ( #59 )
2022-12-12 15:58:11 +08:00
levi
4d4d3b446a
feat: support flutter web
2022-10-27 13:58:43 +08:00
levi
0fc133e46d
feat: bt improve
2022-10-26 17:18:13 +08:00
monkeyWie
c6aa83194f
feat: support RESTful api ( #33 )
2022-09-09 18:31:57 +08:00