summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2016-11-15 10:27:39 +0100
committerOndrej Holy <oholy@redhat.com>2016-11-16 11:43:49 +0100
commiteadddde1a35f60595193e0d373e99e8cafb45090 (patch)
tree4e23f4ebb834504f5127b2bc0170d81108d0f169 /daemon
parentc5cbb90566887528e07ccd6e8f05b63292b6ea71 (diff)
downloadgvfs-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
Diffstat (limited to 'daemon')
-rw-r--r--daemon/gvfsbackendsmb.c11
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, '/');