[telepathy-salut/master] create_transfer_offer: add brackets around IPv6 address
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Wed Apr 1 08:29:49 PDT 2009
---
lib/gibber/gibber-oob-file-transfer.c | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/lib/gibber/gibber-oob-file-transfer.c b/lib/gibber/gibber-oob-file-transfer.c
index ccb401c..fcfecad 100644
--- a/lib/gibber/gibber-oob-file-transfer.c
+++ b/lib/gibber/gibber-oob-file-transfer.c
@@ -425,6 +425,7 @@ create_transfer_offer (GibberOobFileTransfer *self,
gchar host_name[NI_MAXHOST];
struct sockaddr_storage name_addr;
socklen_t name_addr_len = sizeof (name_addr);
+ gchar *host_escaped;
GibberXmppStanza *stanza;
GibberXmppNode *query_node;
@@ -451,12 +452,23 @@ create_transfer_offer (GibberOobFileTransfer *self,
getnameinfo ((struct sockaddr *) &name_addr, name_addr_len, host_name,
sizeof (host_name), NULL, 0, NI_NUMERICHOST);
+ if (name_addr.ss_family == AF_INET6)
+ {
+ /* put brackets around the IP6 */
+ host_escaped = g_strdup_printf("[%s]", host_name);
+ }
+ else
+ {
+ /* IPv4: No need to modify the host_name */
+ host_escaped = g_strdup (host_name);
+ }
+
filename_escaped = g_uri_escape_string (GIBBER_FILE_TRANSFER (self)->filename,
NULL, FALSE);
- /* FIXME: this won't work with IPv6 address */
- url = g_strdup_printf ("http://%s:%d/%s/%s", host_name,
+ url = g_strdup_printf ("http://%s:%d/%s/%s", host_escaped,
soup_server_get_port (self->priv->server),
GIBBER_FILE_TRANSFER (self)->id, filename_escaped);
+ g_free (host_escaped);
g_free (filename_escaped);
served_name = g_strdup_printf ("/%s/%s", GIBBER_FILE_TRANSFER (self)->id,
GIBBER_FILE_TRANSFER (self)->filename);
--
1.5.6.5
More information about the telepathy-commits
mailing list