idn: make Curl_idnconvert_hostname() use Curl_idn_decode()
In the name of less code duplication Closes #13236
This commit is contained in:
Родитель
e54a66aa6c
Коммит
6a43d0d742
23
lib/idn.c
23
lib/idn.c
|
@ -246,11 +246,7 @@ CURLcode Curl_idn_encode(const char *puny, char **output)
|
|||
*/
|
||||
void Curl_free_idnconverted_hostname(struct hostname *host)
|
||||
{
|
||||
if(host->encalloc) {
|
||||
/* must be freed with idn2_free() if allocated by libidn */
|
||||
Curl_idn_free(host->encalloc);
|
||||
host->encalloc = NULL;
|
||||
}
|
||||
Curl_safefree(host->encalloc);
|
||||
}
|
||||
|
||||
#endif /* USE_IDN */
|
||||
|
@ -267,20 +263,11 @@ CURLcode Curl_idnconvert_hostname(struct hostname *host)
|
|||
/* Check name for non-ASCII and convert hostname if we can */
|
||||
if(!Curl_is_ASCII_name(host->name)) {
|
||||
char *decoded;
|
||||
CURLcode result = idn_decode(host->name, &decoded);
|
||||
if(!result) {
|
||||
if(!*decoded) {
|
||||
/* zero length is a bad host name */
|
||||
Curl_idn_free(decoded);
|
||||
return CURLE_URL_MALFORMAT;
|
||||
}
|
||||
/* successful */
|
||||
host->encalloc = decoded;
|
||||
/* change the name pointer to point to the encoded hostname */
|
||||
host->name = host->encalloc;
|
||||
}
|
||||
else
|
||||
CURLcode result = Curl_idn_decode(host->name, &decoded);
|
||||
if(result)
|
||||
return result;
|
||||
/* successful */
|
||||
host->name = host->encalloc = decoded;
|
||||
}
|
||||
#endif
|
||||
return CURLE_OK;
|
||||
|
|
|
@ -31,11 +31,6 @@ CURLcode Curl_idnconvert_hostname(struct hostname *host);
|
|||
void Curl_free_idnconverted_hostname(struct hostname *host);
|
||||
CURLcode Curl_idn_decode(const char *input, char **output);
|
||||
CURLcode Curl_idn_encode(const char *input, char **output);
|
||||
#ifdef USE_LIBIDN2
|
||||
#define Curl_idn_free(x) idn2_free(x)
|
||||
#else
|
||||
#define Curl_idn_free(x) free(x)
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define Curl_free_idnconverted_hostname(x)
|
||||
|
|
Загрузка…
Ссылка в новой задаче