fix_hostname: strip off a single trailing dot from host name

Primarily for SNI, we need the host name without a trailing dot.
"https://www.example.com." resolves fine but fails on SNI unless the dot
is removed.

Reported-by: Leon Winter
Bug: http://curl.haxx.se/mail/lib-2014-04/0161.html
This commit is contained in:
Daniel Stenberg 2014-05-05 13:47:52 +02:00
parent 47d760714f
commit 5de8d84098

View File

@ -3502,9 +3502,17 @@ static void fix_hostname(struct SessionHandle *data,
#elif defined(CURL_DISABLE_VERBOSE_STRINGS) #elif defined(CURL_DISABLE_VERBOSE_STRINGS)
(void)conn; (void)conn;
#endif #endif
size_t len;
/* set the name we use to display the host name */ /* set the name we use to display the host name */
host->dispname = host->name; host->dispname = host->name;
len = strlen(host->name);
if(host->name[len-1] == '.')
/* strip off a single trailing dot if present, primarily for SNI but
there's no use for it */
host->name[len-1]=0;
if(!is_ASCII_name(host->name)) { if(!is_ASCII_name(host->name)) {
#ifdef USE_LIBIDN #ifdef USE_LIBIDN
/************************************************************* /*************************************************************