diff options
author | Ondrej Holy <oholy@redhat.com> | 2016-11-15 10:27:39 +0100 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2016-11-16 11:43:49 +0100 |
commit | eadddde1a35f60595193e0d373e99e8cafb45090 (patch) | |
tree | 4e23f4ebb834504f5127b2bc0170d81108d0f169 | |
parent | c5cbb90566887528e07ccd6e8f05b63292b6ea71 (diff) | |
download | gvfs-eadddde1a35f60595193e0d373e99e8cafb45090.tar.gz |
smb: Fix IPv6 uri handling
IPv6 server includes brackets in GMountSpec, smbclient doesn't. Remove
the brackets from the uri before usage in smbclient functions.
The IPv6 uris can be consequently used in the following format (port
isn't mandatory), e.g.:
gvfs-mount smb://[::1]:139/
https://bugzilla.gnome.org/show_bug.cgi?id=604116
-rw-r--r-- | daemon/gvfsbackendsmb.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c index 12fbd385..7fbdbaad 100644 --- a/daemon/gvfsbackendsmb.c +++ b/daemon/gvfsbackendsmb.c @@ -360,7 +360,16 @@ create_smb_uri_string (const char *server, GString *uri; uri = g_string_new ("smb://"); - g_string_append_encoded (uri, server, NULL); + + /* IPv6 server includes brackets in GMountSpec, smbclient doesn't */ + if (server[0] == '[') + { + g_string_append_encoded (uri, server + 1, NULL); + g_string_truncate (uri, uri->len - 3); + } + else + g_string_append_encoded (uri, server, NULL); + if (port != -1) g_string_append_printf (uri, ":%d", port); g_string_append_c (uri, '/'); |