--- hiperfifo.c.OLD	2006-09-12 06:25:00.000000000 -0500
+++ hiperfifo.c.NEW	2006-10-05 06:25:55.000000000 -0500
@@ -66,6 +66,8 @@
   int prev_running;
   int still_running;
   FILE* input;
+  int requested; /* count: curl_easy_init() */
+  int completed; /* count: curl_easy_cleanup() */
 } GlobalInfo;
 
 
@@ -162,8 +164,10 @@
           free(conn->url);
           curl_easy_cleanup(easy);
           free(conn);
+          g->completed++;
       }
     } while ( easy );
+    fprintf(MSG_OUT, "Requested: %d Completed:%d\n", g->requested, g->completed);
   }
   g->prev_running = g->still_running;
 }
@@ -318,16 +322,22 @@
   curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
   curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
   curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &conn);
-  curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 0);
+  curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1);
   curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
   curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0);
+  curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 1);
   curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
   curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
+  curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1);  
+  curl_easy_setopt(conn->easy, CURLOPT_CONNECTTIMEOUT, 30);  
+  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 1);
+  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 30);
+
   fprintf(MSG_OUT,
           "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
   rc =curl_multi_add_handle(g->multi, conn->easy);
   mcode_or_die("new_conn: curl_multi_add_handle", rc);
+  g->requested++;
   do {
     rc = curl_multi_socket_all(g->multi, &g->still_running);
   } while (CURLM_CALL_MULTI_PERFORM == rc);
