multi.c: OOM handling fixes making torture tests 560 580 581 pass

This commit is contained in:
Yang Tse 2011-10-06 20:30:34 +02:00
parent 1958fe5745
commit b82bd05354
1 changed files with 6 additions and 2 deletions

View 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);