--- connect.c.org	2015-03-23 16:39:27.218849559 +0900
+++ connect.c	2015-03-23 16:42:58.566853526 +0900
@@ -1202,15 +1202,23 @@
 
   DEBUGASSERT(data);
 
-  /* this only works for an easy handle that has been used for
-     curl_easy_perform()! */
-  if(data->state.lastconnect && data->multi_easy) {
+  /* this works for an easy handle:
+   * - that has been used for curl_easy_perform()
+   * - that is associated with a multi handle, and whose connection
+   *   was detached with CURLOPT_CONNECT_ONLY
+   */
+  if(data->state.lastconnect && (data->multi_easy || data->multi)) {
     struct connectdata *c = data->state.lastconnect;
     struct connfind find;
     find.tofind = data->state.lastconnect;
     find.found = FALSE;
 
-    Curl_conncache_foreach(data->multi_easy->conn_cache, &find, conn_is_conn);
+    if(data->multi_easy) {
+      Curl_conncache_foreach(data->multi_easy->conn_cache, &find, conn_is_conn);
+    }
+    else {
+      Curl_conncache_foreach(data->multi->conn_cache, &find, conn_is_conn);
+    }
 
     if(!find.found) {
       data->state.lastconnect = NULL;
