fix out of memory handling issue

This commit is contained in:
Yang Tse 2007-04-08 22:49:38 +00:00
parent c518c52aba
commit 0e05a6329a
2 changed files with 12 additions and 3 deletions

View File

@ -397,7 +397,10 @@ CURLcode curl_easy_perform(CURL *easy)
mcode = curl_multi_add_handle(multi, easy);
if(mcode) {
curl_multi_cleanup(multi);
return CURLE_FAILED_INIT;
if(mcode == CURLM_OUT_OF_MEMORY)
return CURLE_OUT_OF_MEMORY;
else
return CURLE_FAILED_INIT;
}
/* we start some action by calling perform right away */

View File

@ -501,6 +501,9 @@ CURLcode Curl_open(struct SessionHandle **curl)
{
CURLcode res = CURLE_OK;
struct SessionHandle *data;
#ifdef USE_ARES
int status;
#endif
/* Very simple start-up: alloc the struct, init it with zeroes and return */
data = (struct SessionHandle *)calloc(1, sizeof(struct SessionHandle));
@ -513,10 +516,13 @@ CURLcode Curl_open(struct SessionHandle **curl)
data->magic = CURLEASY_MAGIC_NUMBER;
#ifdef USE_ARES
if(ARES_SUCCESS != ares_init(&data->state.areschannel)) {
if ((status = ares_init(&data->state.areschannel)) != ARES_SUCCESS) {
DEBUGF(fprintf(stderr, "Error: ares_init failed\n"));
free(data);
return CURLE_FAILED_INIT;
if (status == ARES_ENOMEM)
return CURLE_OUT_OF_MEMORY;
else
return CURLE_FAILED_INIT;
}
/* make sure that all other returns from this function should destroy the
ares channel before returning error! */