diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index 511227cb6e2214782bc274224beaa073fa5ef99b..69c2c2ee9ad41a79faac73e77f925f840f3763cc 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -28,7 +28,7 @@
 #include "tool_metalink.h"
 
 struct OperationConfig {
-  CURL *easy;               /* once we have one, we keep it here */
+  CURL *easy;               /* A copy of the handle from GlobalConfig */
   bool remote_time;
   char *random_file;
   char *egd_file;
@@ -220,6 +220,13 @@ struct OperationConfig {
   struct OperationConfig* next; /* Always last in the struct */
 };
 
+struct GlobalConfig {
+  CURL *easy;                     /* Once we have one, we keep it here */
+
+  struct OperationConfig *first;
+  struct OperationConfig *last;   /* Always last in the struct */
+};
+
 void config_init(struct OperationConfig* config);
 void config_free(struct OperationConfig* config);
 
diff --git a/src/tool_main.c b/src/tool_main.c
index 9542b059a8609fb763a84309c10448ed350415ee..0cc767b1ff30fd52272bb048fb48f1268c94d0a4 100644
--- a/src/tool_main.c
+++ b/src/tool_main.c
@@ -162,8 +162,11 @@ static void main_free(void)
 int main(int argc, char *argv[])
 {
   CURLcode result = CURLE_OK;
+  struct GlobalConfig global;
   struct OperationConfig *config;
 
+  memset(&global, 0, sizeof(global));
+
   main_checkfds();
 
 #if defined(HAVE_SIGNAL) && defined(SIGPIPE)
@@ -173,7 +176,7 @@ int main(int argc, char *argv[])
   /* Initialize memory tracking */
   memory_tracking_init();
 
-  /* Allocate the initial config */
+  /* Allocate the initial operate config */
   config = malloc(sizeof(struct OperationConfig));
 
   if(config) {