diff options
author | Diogo Sousa <diogogsousa@gmail.com> | 2013-06-19 00:15:47 +0100 |
---|---|---|
committer | Diogo Sousa <diogogsousa@gmail.com> | 2013-06-19 00:15:47 +0100 |
commit | 02139fbb79e8a761ade80a6fffc03f072d97b3da (patch) | |
tree | ae768b085aef88c5d6882481ec4b140229e3484e /src | |
parent | 9ef1d1db96f8f5b0606bb1990cace7feb7335580 (diff) |
Handle IPv6 addresses correcly in fe_open_url_locale().
Diffstat (limited to 'src')
-rw-r--r-- | src/fe-gtk/fe-gtk.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index e017b9b9..e3b4ec80 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -1008,8 +1008,22 @@ fe_open_url_inner (const char *url) static void fe_open_url_locale (const char *url) { + int url_type = url_check_word (url); + + /* IPv6 addr. Add http:// */ + if (url_type == WORD_HOST6) + { + /* IPv6 addrs in urls should be enclosed in [ ] */ + if (*url != '[') + url = g_strdup_printf ("http://[%s]", url); + else + url = g_strdup_printf ("http://%s", url); + + fe_open_url_inner (url); + g_free ((char *)url); + } /* the http:// part's missing, prepend it, otherwise it won't always work */ - if (strchr (url, ':') == NULL && url_check_word (url) != WORD_PATH) + else if (strchr (url, ':') == NULL && url_type != WORD_PATH) { url = g_strdup_printf ("http://%s", url); fe_open_url_inner (url); |