idn: make Curl_idnconvert_hostname() use Curl_idn_decode()

In the name of less code duplication

Closes #13236
This commit is contained in:
Daniel Stenberg 2024-03-30 22:56:48 +01:00
Родитель e54a66aa6c
Коммит 6a43d0d742
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 5CC908FDB71E12C2
2 изменённых файлов: 5 добавлений и 23 удалений

Просмотреть файл

@ -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)