diff options
author | jcid <devnull@localhost> | 2008-10-14 16:04:53 +0200 |
---|---|---|
committer | jcid <devnull@localhost> | 2008-10-14 16:04:53 +0200 |
commit | ce8e972a10c9340312f21511de053242dad3f5db (patch) | |
tree | 47de2fc9a2df5eaba14ba10186de9be1323db458 /src/url.c | |
parent | 3a7e1c18f27a0b1cd49c3b44c291fae886310b70 (diff) |
- Changed the google search URL (UTF-8 request)release-2_0
- Patch to recognize IPv6 numbers in the URL's authority part
Diffstat (limited to 'src/url.c')
-rw-r--r-- | src/url.c | 22 |
1 files changed, 17 insertions, 5 deletions
@@ -102,11 +102,23 @@ const char *a_Url_hostname(const DilloUrl *u) DilloUrl *url = (DilloUrl *) u; if (!url->hostname && url->authority) { - if ((p = strchr(url->authority, ':'))) { - url->port = strtol(p + 1, NULL, 10); - url->hostname = dStrndup(url->authority,(uint_t)(p - url->authority)); - } else - url->hostname = url->authority; + if (url->authority[0] == '[' && (p = strchr(url->authority, ']'))) { + /* numeric ipv6 address, strip the brackets */ + url->hostname = dStrndup(url->authority + 1, + (uint_t)(p - url->authority - 1)); + if ((p = strchr(p, ':'))) { + url->port = strtol(p + 1, NULL, 10); + } + } else { + /* numeric ipv4 or hostname */ + if ((p = strchr(url->authority, ':'))) { + url->port = strtol(p + 1, NULL, 10); + url->hostname = dStrndup(url->authority, + (uint_t)(p - url->authority)); + } else { + url->hostname = url->authority; + } + } } return url->hostname; |