]> granicus.if.org Git - curl/commitdiff
multi: move the ending condition into the loop as well
authorDaniel Stenberg <daniel@haxx.se>
Tue, 18 Nov 2014 19:51:54 +0000 (20:51 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 18 Nov 2014 21:57:22 +0000 (22:57 +0100)
... as it was before I changed the loop in commit e04ccbd50. It caused
test 2030 and 2032 to fail.

lib/multi.c

index 7e1adf76599b3ea4e1fea5a2be8796927fc82a60..080e54bce4a2ad1f58f3f5d7612db62fb66d27ee 100644 (file)
@@ -956,7 +956,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
       data->state.pipe_broke = FALSE;
       data->easy_conn = NULL;
-      break;
+      continue;
     }
 
     if(!data->easy_conn &&
@@ -1750,22 +1750,23 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         rc = CURLM_CALL_MULTI_PERFORM;
       }
     }
-  } while(rc == CURLM_CALL_MULTI_PERFORM);
 
-  data->result = result;
+    if(CURLM_STATE_COMPLETED == data->mstate) {
+      /* now fill in the Curl_message with this info */
+      msg = &data->msg;
+
+      msg->extmsg.msg = CURLMSG_DONE;
+      msg->extmsg.easy_handle = data;
+      msg->extmsg.data.result = result;
 
-  if(CURLM_STATE_COMPLETED == data->mstate) {
-    /* now fill in the Curl_message with this info */
-    msg = &data->msg;
+      rc = multi_addmsg(multi, msg);
 
-    msg->extmsg.msg = CURLMSG_DONE;
-    msg->extmsg.easy_handle = data;
-    msg->extmsg.data.result = result;
+      multistate(data, CURLM_STATE_MSGSENT);
+    }
+  } while(rc == CURLM_CALL_MULTI_PERFORM);
 
-    rc = multi_addmsg(multi, msg);
+  data->result = result;
 
-    multistate(data, CURLM_STATE_MSGSENT);
-  }
 
   return rc;
 }