easy: fix compiler warning: end-of-loop code not reached
This commit is contained in:
170
lib/easy.c
170
lib/easy.c
@@ -626,123 +626,117 @@ CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...)
|
|||||||
*/
|
*/
|
||||||
CURL *curl_easy_duphandle(CURL *incurl)
|
CURL *curl_easy_duphandle(CURL *incurl)
|
||||||
{
|
{
|
||||||
bool fail = TRUE;
|
|
||||||
struct SessionHandle *data=(struct SessionHandle *)incurl;
|
struct SessionHandle *data=(struct SessionHandle *)incurl;
|
||||||
|
|
||||||
struct SessionHandle *outcurl = calloc(1, sizeof(struct SessionHandle));
|
struct SessionHandle *outcurl = calloc(1, sizeof(struct SessionHandle));
|
||||||
|
|
||||||
if(NULL == outcurl)
|
if(NULL == outcurl)
|
||||||
return NULL; /* failure */
|
goto fail;
|
||||||
|
|
||||||
for(;;) {
|
/*
|
||||||
|
* We setup a few buffers we need. We should probably make them
|
||||||
|
* get setup on-demand in the code, as that would probably decrease
|
||||||
|
* the likeliness of us forgetting to init a buffer here in the future.
|
||||||
|
*/
|
||||||
|
outcurl->state.headerbuff = malloc(HEADERSIZE);
|
||||||
|
if(!outcurl->state.headerbuff)
|
||||||
|
goto fail;
|
||||||
|
outcurl->state.headersize = HEADERSIZE;
|
||||||
|
|
||||||
/*
|
/* copy all userdefined values */
|
||||||
* We setup a few buffers we need. We should probably make them
|
if(Curl_dupset(outcurl, data) != CURLE_OK)
|
||||||
* get setup on-demand in the code, as that would probably decrease
|
goto fail;
|
||||||
* the likeliness of us forgetting to init a buffer here in the future.
|
|
||||||
*/
|
|
||||||
outcurl->state.headerbuff = malloc(HEADERSIZE);
|
|
||||||
if(!outcurl->state.headerbuff)
|
|
||||||
break;
|
|
||||||
outcurl->state.headersize = HEADERSIZE;
|
|
||||||
|
|
||||||
/* copy all userdefined values */
|
/* the connection cache is setup on demand */
|
||||||
if(Curl_dupset(outcurl, data) != CURLE_OK)
|
outcurl->state.connc = NULL;
|
||||||
break;
|
|
||||||
|
|
||||||
/* the connection cache is setup on demand */
|
outcurl->state.lastconnect = -1;
|
||||||
outcurl->state.connc = NULL;
|
|
||||||
|
|
||||||
outcurl->state.lastconnect = -1;
|
outcurl->progress.flags = data->progress.flags;
|
||||||
|
outcurl->progress.callback = data->progress.callback;
|
||||||
outcurl->progress.flags = data->progress.flags;
|
|
||||||
outcurl->progress.callback = data->progress.callback;
|
|
||||||
|
|
||||||
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
|
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
|
||||||
if(data->cookies) {
|
if(data->cookies) {
|
||||||
/* If cookies are enabled in the parent handle, we enable them
|
/* If cookies are enabled in the parent handle, we enable them
|
||||||
in the clone as well! */
|
in the clone as well! */
|
||||||
outcurl->cookies = Curl_cookie_init(data,
|
outcurl->cookies = Curl_cookie_init(data,
|
||||||
data->cookies->filename,
|
data->cookies->filename,
|
||||||
outcurl->cookies,
|
outcurl->cookies,
|
||||||
data->set.cookiesession);
|
data->set.cookiesession);
|
||||||
if(!outcurl->cookies)
|
if(!outcurl->cookies)
|
||||||
break;
|
goto fail;
|
||||||
}
|
}
|
||||||
#endif /* CURL_DISABLE_HTTP */
|
#endif /* CURL_DISABLE_HTTP */
|
||||||
|
|
||||||
/* duplicate all values in 'change' */
|
/* duplicate all values in 'change' */
|
||||||
|
|
||||||
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
|
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
|
||||||
if(data->change.cookielist) {
|
if(data->change.cookielist) {
|
||||||
outcurl->change.cookielist =
|
outcurl->change.cookielist =
|
||||||
Curl_slist_duplicate(data->change.cookielist);
|
Curl_slist_duplicate(data->change.cookielist);
|
||||||
|
if(!outcurl->change.cookielist)
|
||||||
if (!outcurl->change.cookielist)
|
goto fail;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
#endif /* CURL_DISABLE_HTTP */
|
#endif /* CURL_DISABLE_HTTP */
|
||||||
|
|
||||||
if(data->change.url) {
|
if(data->change.url) {
|
||||||
outcurl->change.url = strdup(data->change.url);
|
outcurl->change.url = strdup(data->change.url);
|
||||||
if(!outcurl->change.url)
|
if(!outcurl->change.url)
|
||||||
break;
|
goto fail;
|
||||||
outcurl->change.url_alloc = TRUE;
|
outcurl->change.url_alloc = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(data->change.referer) {
|
if(data->change.referer) {
|
||||||
outcurl->change.referer = strdup(data->change.referer);
|
outcurl->change.referer = strdup(data->change.referer);
|
||||||
if(!outcurl->change.referer)
|
if(!outcurl->change.referer)
|
||||||
break;
|
goto fail;
|
||||||
outcurl->change.referer_alloc = TRUE;
|
outcurl->change.referer_alloc = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_ARES
|
#ifdef USE_ARES
|
||||||
/* If we use ares, we clone the ares channel for the new handle */
|
/* If we use ares, we clone the ares channel for the new handle */
|
||||||
if(ARES_SUCCESS != ares_dup(&outcurl->state.areschannel,
|
if(ARES_SUCCESS != ares_dup(&outcurl->state.areschannel,
|
||||||
data->state.areschannel))
|
data->state.areschannel))
|
||||||
break;
|
goto fail;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
|
#if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
|
||||||
outcurl->inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
|
outcurl->inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
|
||||||
CURL_ICONV_CODESET_OF_NETWORK);
|
CURL_ICONV_CODESET_OF_NETWORK);
|
||||||
outcurl->outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
|
outcurl->outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
|
||||||
CURL_ICONV_CODESET_OF_HOST);
|
CURL_ICONV_CODESET_OF_HOST);
|
||||||
outcurl->utf8_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
|
outcurl->utf8_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
|
||||||
CURL_ICONV_CODESET_FOR_UTF8);
|
CURL_ICONV_CODESET_FOR_UTF8);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Curl_easy_initHandleData(outcurl);
|
Curl_easy_initHandleData(outcurl);
|
||||||
|
|
||||||
outcurl->magic = CURLEASY_MAGIC_NUMBER;
|
outcurl->magic = CURLEASY_MAGIC_NUMBER;
|
||||||
|
|
||||||
fail = FALSE; /* we reach this point and thus we are OK */
|
/* we reach this point and thus we are OK */
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(fail) {
|
|
||||||
if(outcurl) {
|
|
||||||
if(outcurl->state.connc &&
|
|
||||||
(outcurl->state.connc->type == CONNCACHE_PRIVATE))
|
|
||||||
Curl_rm_connc(outcurl->state.connc);
|
|
||||||
if(outcurl->state.headerbuff)
|
|
||||||
free(outcurl->state.headerbuff);
|
|
||||||
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
|
|
||||||
if(outcurl->change.cookielist)
|
|
||||||
curl_slist_free_all(outcurl->change.cookielist);
|
|
||||||
#endif
|
|
||||||
if(outcurl->change.url)
|
|
||||||
free(outcurl->change.url);
|
|
||||||
if(outcurl->change.referer)
|
|
||||||
free(outcurl->change.referer);
|
|
||||||
Curl_freeset(outcurl);
|
|
||||||
free(outcurl); /* free the memory again */
|
|
||||||
outcurl = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return outcurl;
|
return outcurl;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
|
||||||
|
if(outcurl) {
|
||||||
|
if(outcurl->state.connc &&
|
||||||
|
(outcurl->state.connc->type == CONNCACHE_PRIVATE))
|
||||||
|
Curl_rm_connc(outcurl->state.connc);
|
||||||
|
if(outcurl->state.headerbuff)
|
||||||
|
free(outcurl->state.headerbuff);
|
||||||
|
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
|
||||||
|
if(outcurl->change.cookielist)
|
||||||
|
curl_slist_free_all(outcurl->change.cookielist);
|
||||||
|
#endif
|
||||||
|
if(outcurl->change.url)
|
||||||
|
free(outcurl->change.url);
|
||||||
|
if(outcurl->change.referer)
|
||||||
|
free(outcurl->change.referer);
|
||||||
|
Curl_freeset(outcurl);
|
||||||
|
free(outcurl);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user