summaryrefslogtreecommitdiff
path: root/src/tool_cfgable.h
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-09-23 17:11:22 +0200
committerDaniel Stenberg <daniel@haxx.se>2019-10-02 07:50:32 +0200
commite59371a4936f8e7e2187b09a08d34d9a4c278657 (patch)
tree42dd007c9b136a2282605373a06f23409a3b6941 /src/tool_cfgable.h
parentc124e6b3c04bfd254e24312bc66c2bc9db919442 (diff)
downloadcurl-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.h19
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 {