diff -ru curl-7.15.2-20051221.orig/include/curl/curl.h curl-7.15.2-20051221.new/include/curl/curl.h
--- curl-7.15.2-20051221.orig/include/curl/curl.h	2005-12-21 04:00:31.000000000 +0100
+++ curl-7.15.2-20051221.new/include/curl/curl.h	2005-12-21 18:19:37.446567528 +0100
@@ -1269,9 +1269,10 @@
   CURLINFO_NUM_CONNECTS     = CURLINFO_LONG   + 26,
   CURLINFO_SSL_ENGINES      = CURLINFO_SLIST  + 27,
   CURLINFO_COOKIELIST       = CURLINFO_SLIST  + 28,
+  CURLINFO_HTTP_SOCKET      = CURLINFO_LONG  + 29,
   /* Fill in new entries below here! */
 
-  CURLINFO_LASTONE          = 28
+  CURLINFO_LASTONE          = 29
 } CURLINFO;
 
 /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
diff -ru curl-7.15.2-20051221.orig/lib/getinfo.c curl-7.15.2-20051221.new/lib/getinfo.c
--- curl-7.15.2-20051221.orig/lib/getinfo.c	2005-07-28 04:00:06.000000000 +0200
+++ curl-7.15.2-20051221.new/lib/getinfo.c	2005-12-21 18:50:27.725648970 +0100
@@ -187,6 +187,37 @@
   case CURLINFO_COOKIELIST:
     *param_slistp = Curl_cookie_list(data);
     break;
+  case CURLINFO_HTTP_SOCKET:
+    {
+      int i;
+      struct connectdata *conn;
+      struct timeval now;
+      long lowscore, score;
+      int winner = -1;
+
+      now = Curl_tvnow();
+
+      for(i=0; i< data->state.numconnects; i++) {
+	conn = data->state.connects[i];
+
+	if(!conn)
+	  continue;
+
+	if (!(conn->protocol & PROT_HTTP))
+	  continue;
+
+	score = Curl_tvdiff(now, conn->now);
+	if ((winner == -1) || (score < lowscore)) {
+	  lowscore = score;
+	  winner = i;
+	}
+      }
+      if (winner == -1)
+	return CURLE_GOT_NOTHING;
+
+      *param_longp = data->state.connects[winner]->sock[FIRSTSOCKET];
+      break;
+    }
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }


