diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-09-23 17:11:22 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-10-02 07:50:32 +0200 |
commit | e59371a4936f8e7e2187b09a08d34d9a4c278657 (patch) | |
tree | 42dd007c9b136a2282605373a06f23409a3b6941 /src/tool_cfgable.h | |
parent | c124e6b3c04bfd254e24312bc66c2bc9db919442 (diff) | |
download | curl-e59371a4936f8e7e2187b09a08d34d9a4c278657.tar.gz |
curl: create easy handles on-demand and not ahead of time
This should again enable crazy-large download ranges of the style
[1-10000000] that otherwise easily ran out of memory starting in 7.66.0
when this new handle allocating scheme was introduced.
Reported-by: Peter Sumatra
Fixes #4393
Closes #4438
Diffstat (limited to 'src/tool_cfgable.h')
-rw-r--r-- | src/tool_cfgable.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index ff80f8eb8..7232c35e3 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -22,11 +22,9 @@ * ***************************************************************************/ #include "tool_setup.h" - #include "tool_sdecls.h" - #include "tool_metalink.h" - +#include "tool_urlglob.h" #include "tool_formparse.h" typedef enum { @@ -37,6 +35,20 @@ typedef enum { struct GlobalConfig; +struct State { + struct getout *urlnode; + URLGlob *inglob; + URLGlob *urls; + char *outfiles; + char *httpgetfields; + char *uploadfile; + unsigned long infilenum; /* number of files to upload */ + unsigned long up; /* upload file counter within a single upload glob */ + unsigned long urlnum; /* how many iterations this single URL has with ranges + etc */ + unsigned long li; +}; + struct OperationConfig { bool remote_time; char *random_file; @@ -262,6 +274,7 @@ struct OperationConfig { struct GlobalConfig *global; struct OperationConfig *prev; struct OperationConfig *next; /* Always last in the struct */ + struct State state; /* for create_transfer() */ }; struct GlobalConfig { |