]> granicus.if.org Git - curl/commitdiff
multi.c: OOM handling fixes making torture tests 560 580 581 pass
authorYang Tse <yangsita@gmail.com>
Thu, 6 Oct 2011 18:30:34 +0000 (20:30 +0200)
committerYang Tse <yangsita@gmail.com>
Thu, 6 Oct 2011 18:30:34 +0000 (20:30 +0200)
lib/multi.c

index bf1f46764bed5eb57a693bf4453d1e854839f0c1..0f7a24993f401b5e6a87ea4d4fcf79aa7619b89c 100644 (file)
@@ -1041,7 +1041,9 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         /* Add this handle to the send or pend pipeline */
         easy->result = addHandleToSendOrPendPipeline(data,
                                                      easy->easy_conn);
-        if(CURLE_OK == easy->result) {
+        if(CURLE_OK != easy->result)
+          disconnect_conn = TRUE;
+        else {
           if(async)
             /* We're now waiting for an asynchronous name lookup */
             multistate(easy, CURLM_STATE_WAITRESOLVE);
@@ -1539,8 +1541,10 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
             newurl = data->req.location;
             data->req.location = NULL;
             easy->result = Curl_follow(data, newurl, FOLLOW_FAKE);
-            if(easy->result)
+            if(easy->result) {
+              disconnect_conn = TRUE;
               free(newurl);
+            }
           }
 
           multistate(easy, CURLM_STATE_DONE);