curl/src
Jay Satiro e7247d8697 tool_operate: keep failed partial download for retry auto-resume
- Keep data from a failed download instead of discarding it on retry in
  some limited cases when we know it's ok (currently only HTTP 200/206).

Prior to this change on failed transfer the tool truncated any outfile
data written before retrying the transfer. This change adds an exception
for HTTP downloads when the user requested auto-resume, because in that
case we can keep the outfile data and resume from the new position.

Reported-by: tkzv@users.noreply.github.com

Fixes https://github.com/curl/curl/issues/18035
Closes https://github.com/curl/curl/pull/18665
2025-10-09 14:39:27 -04:00
..
.checksrc lib: stop overriding system printf symbols 2025-10-06 20:57:59 +02:00
.gitignore rtmp: remove no longer used proto member 2025-05-08 10:24:19 +02:00
CMakeLists.txt cmake: use more COMPILER_OPTIONS, LINK_OPTIONS / LINK_FLAGS 2025-09-29 13:07:14 +02:00
config2setopts.c tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
config2setopts.h curl: remove the global argument from many functions 2025-07-10 23:28:31 +02:00
curl.rc windows: drop code and curl manifest targeting W2K and older 2025-02-24 21:00:31 +01:00
curlinfo.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
Makefile.am clang-tidy: disable clang-analyzer-security.ArrayBound 2025-08-29 03:07:42 +02:00
Makefile.inc tidy-up: miscellaneous (cont.) 2025-10-06 22:33:38 +02:00
mk-file-embed.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
mkhelp.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
slist_wc.c tidy-up: replace <memdebug.h> with "memdebug.h" (src, units) 2025-06-24 09:44:28 +02:00
slist_wc.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
terminal.c tidy-up: whitespace 2025-09-15 15:00:11 +02:00
terminal.h curl: make warnings and other messages aware of terminal width 2024-05-28 23:12:32 +02:00
tool_bname.c tidy-up: replace <memdebug.h> with "memdebug.h" (src, units) 2025-06-24 09:44:28 +02:00
tool_bname.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cb_dbg.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_cb_dbg.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cb_hdr.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_cb_hdr.h tool_cb_hrd: remove global pointer from 'struct HdrCbData' 2025-08-05 15:47:56 +02:00
tool_cb_prg.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_cb_prg.h curltime: use libcurl time functions in src and tests/server 2025-03-12 11:33:26 +01:00
tool_cb_rea.c build: avoid overriding system symbols for socket functions 2025-09-20 13:44:59 +02:00
tool_cb_rea.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cb_see.c tidy-up: replace <memdebug.h> with "memdebug.h" (src, units) 2025-06-24 09:44:28 +02:00
tool_cb_see.h tool: move tool_ftruncate64 to tool_util.c 2024-04-25 09:20:38 +02:00
tool_cb_soc.c build: avoid overriding system symbols for socket functions 2025-09-20 13:44:59 +02:00
tool_cb_soc.h curl: (on linux) add MPTCP support 2024-06-07 10:54:19 +02:00
tool_cb_wrt.c curlx: move Curl_strerror, use in src and tests, ban strerror globally 2025-10-06 09:44:23 +02:00
tool_cb_wrt.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
tool_cfgable.c tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
tool_cfgable.h tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
tool_dirhie.c curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_dirhie.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_doswin.c windows: use consistent format when showing error codes 2025-10-06 14:00:29 +02:00
tool_doswin.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_easysrc.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_easysrc.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_filetime.c windows: use consistent format when showing error codes 2025-10-06 14:00:29 +02:00
tool_filetime.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_findfile.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_findfile.h windows: use built-in _WIN32 macro to detect Windows 2023-11-22 15:42:25 +00:00
tool_formparse.c curlx: move Curl_strerror, use in src and tests, ban strerror globally 2025-10-06 09:44:23 +02:00
tool_formparse.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_getparam.c tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
tool_getparam.h tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
tool_getpass.c build: avoid overriding system open and stat symbols 2025-09-30 16:30:09 +02:00
tool_getpass.h code: language cleanup in comments 2024-07-01 22:58:55 +02:00
tool_help.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_help.h curl: fix memory leak when -h is used in config file 2025-05-10 11:16:07 +02:00
tool_helpers.c curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_helpers.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_hugehelp.h build: drop tool_hugehelp.c.cvs, tidy up macros, drop buildconf.bat 2025-01-26 14:22:49 +01:00
tool_ipfs.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_ipfs.h ipfs: add options to disable 2024-09-21 12:08:32 +02:00
tool_libinfo.c tidy-up: replace <memdebug.h> with "memdebug.h" (src, units) 2025-06-24 09:44:28 +02:00
tool_libinfo.h tool_getparam: fail --hostpubsha256 if libssh2 is not used 2025-01-28 10:30:40 +01:00
tool_listhelp.c tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
tool_main.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_main.h curl: add --parallel-max-host to limit concurrent connections per host 2025-07-31 23:30:40 +02:00
tool_msgs.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_msgs.h curl: remove first argument from helpf() 2025-08-07 16:55:39 +02:00
tool_operate.c tool_operate: keep failed partial download for retry auto-resume 2025-10-09 14:39:27 -04:00
tool_operate.h tool: move the error buffer to the per transfer struct 2025-09-01 08:52:57 +02:00
tool_operhlp.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_operhlp.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_paramhlp.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_paramhlp.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_parsecfg.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_parsecfg.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_progress.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_progress.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_sdecls.h curl: make the URL indexes 64 bit 2025-07-30 23:13:45 +02:00
tool_setopt.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_setopt.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_setup.h tidy-up: whitespace 2025-07-11 13:32:54 +02:00
tool_ssls.c build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
tool_ssls.h curl: remove the global argument from many functions 2025-07-10 23:28:31 +02:00
tool_stderr.c build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
tool_stderr.h curl: make global truly global 2025-08-07 10:43:06 +02:00
tool_strdup.c tool: replace three malloc + copy with memdup0 2025-08-05 15:46:51 +02:00
tool_strdup.h tool: replace three malloc + copy with memdup0 2025-08-05 15:46:51 +02:00
tool_urlglob.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_urlglob.h tool_urlglob: polish, cleanups, improvements 2025-08-06 08:47:53 +02:00
tool_util.c build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
tool_util.h curltime: use libcurl time functions in src and tests/server 2025-03-12 11:33:26 +01:00
tool_version.h config: rename the OS define to CURL_OS to reduce collision risk 2024-10-30 14:59:54 +01:00
tool_vms.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_vms.h tidy-up: more whitespace/indent, comments 2025-07-25 11:47:51 +02:00
tool_writeout.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_writeout.h curl: add write-out variable 'tls_earlydata' 2025-02-22 10:02:39 +01:00
tool_writeout_json.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_writeout_json.h curlx: move into to curlx/ 2025-05-07 11:01:15 +02:00
tool_xattr.c src: stop overriding system printf symbols 2025-10-06 09:46:29 +02:00
tool_xattr.h tests: always make bundles, adapt build and tests 2025-06-14 21:08:23 +02:00
var.c curlx: move Curl_strerror, use in src and tests, ban strerror globally 2025-10-06 09:44:23 +02:00
var.h curl: make global truly global 2025-08-07 10:43:06 +02:00