diff -uwrbB curl-7.9.5.orig/include/curl/curl.h curl-7.9.5/include/curl/curl.h
--- curl-7.9.5.orig/include/curl/curl.h	Thu Mar  7 09:44:19 2002
+++ curl-7.9.5/include/curl/curl.h	Mon Apr 15 16:04:51 2002
@@ -671,9 +671,12 @@
 
   CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
 
+  CURLINFO_REDIRECT_TIME   = CURLINFO_DOUBLE + 19,
+  CURLINFO_REDIRECT_COUNT  = CURLINFO_LONG + 20,
+
   /* Fill in new entries here! */
 
-  CURLINFO_LASTONE          = 19
+  CURLINFO_LASTONE          = 21
 } CURLINFO;
 
 /* unfortunately, the easy.h include file needs the options and info stuff
diff -uwrbB curl-7.9.5.orig/lib/getinfo.c curl-7.9.5/lib/getinfo.c
--- curl-7.9.5.orig/lib/getinfo.c	Wed Feb 20 14:46:54 2002
+++ curl-7.9.5/lib/getinfo.c	Mon Apr 15 16:05:58 2002
@@ -49,6 +49,7 @@
   pro->t_pretransfer = 0;
   pro->t_starttransfer = 0;
   pro->timespent = 0;
+  pro->t_redirect = 0;
 
   info->httpcode = 0;
   info->httpversion=0;
@@ -142,6 +143,12 @@
     break;
   case CURLINFO_CONTENT_LENGTH_UPLOAD:
     *param_doublep = data->progress.size_ul;
+    break;
+  case CURLINFO_REDIRECT_TIME:
+    *param_doublep =  data->progress.t_redirect;
+    break;
+  case CURLINFO_REDIRECT_COUNT:
+    *param_longp = data->set.followlocation;
     break;
   case CURLINFO_CONTENT_TYPE:
     *param_charp = data->info.contenttype;
diff -uwrbB curl-7.9.5.orig/lib/progress.c curl-7.9.5/lib/progress.c
--- curl-7.9.5.orig/lib/progress.c	Tue Nov 20 16:00:50 2001
+++ curl-7.9.5/lib/progress.c	Mon Apr 15 15:51:16 2002
@@ -103,6 +103,15 @@
   }
 }
 
+/* reset all times except redirect */
+void Curl_pgrsResetTimes(struct SessionHandle *data)
+{
+  data->progress.t_nslookup = 0.0;
+  data->progress.t_connect = 0.0;
+  data->progress.t_pretransfer = 0.0;
+  data->progress.t_starttransfer = 0.0;
+}
+
 void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
 {
   switch(timer) {
@@ -133,6 +142,10 @@
     break;
   case TIMER_POSTRANSFER:
     /* this is the normal end-of-transfer thing */
+    break;
+  case TIMER_REDIRECT:
+    data->progress.t_redirect =
+      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
     break;
   }
 }
diff -uwrbB curl-7.9.5.orig/lib/progress.h curl-7.9.5/lib/progress.h
--- curl-7.9.5.orig/lib/progress.h	Tue Nov 20 16:00:50 2001
+++ curl-7.9.5/lib/progress.h	Mon Apr 15 15:51:16 2002
@@ -34,6 +34,7 @@
   TIMER_STARTTRANSFER,
   TIMER_POSTRANSFER,
   TIMER_STARTSINGLE,
+  TIMER_REDIRECT,
   TIMER_LAST /* must be last */
 } timerid;
   
@@ -44,6 +45,7 @@
 void Curl_pgrsSetDownloadCounter(struct SessionHandle *data, double size);
 void Curl_pgrsSetUploadCounter(struct SessionHandle *data, double size);
 int Curl_pgrsUpdate(struct connectdata *);
+void Curl_pgrsResetTimes(struct SessionHandle *data);
 void Curl_pgrsTime(struct SessionHandle *data, timerid timer);
 
 
diff -uwrbB curl-7.9.5.orig/lib/transfer.c curl-7.9.5/lib/transfer.c
--- curl-7.9.5.orig/lib/transfer.c	Thu Feb 28 16:13:35 2002
+++ curl-7.9.5/lib/transfer.c	Mon Apr 15 15:51:16 2002
@@ -1301,6 +1301,8 @@
            */
           break;
         }
+        Curl_pgrsTime(data, TIMER_REDIRECT);
+        Curl_pgrsResetTimes(data);
         continue;
       }
     }
diff -uwrbB curl-7.9.5.orig/lib/urldata.h curl-7.9.5/lib/urldata.h
--- curl-7.9.5.orig/lib/urldata.h	Fri Mar  1 00:31:23 2002
+++ curl-7.9.5/lib/urldata.h	Mon Apr 15 15:51:16 2002
@@ -451,6 +451,7 @@
   double t_connect;
   double t_pretransfer;
   double t_starttransfer;
+  double t_redirect;
 
   struct timeval start;
   struct timeval t_startsingle;

