summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2011-04-07 10:20:37 +0100
committerJonny Lamb <jonny.lamb@collabora.co.uk>2011-04-07 10:20:37 +0100
commiteca1ade70e2a05e5f08ad21d6aafaba58a7aba65 (patch)
tree9065984ccc8ffc82960727ac9affdd542c7cb4ab /lib
parent194ca9bd5fc1ff70845937cd03f49bb74b91a1e1 (diff)
parent6856d768ec168a2e25b55fb4eec62731befc0dc2 (diff)
downloadtelepathy-salut-eca1ade70e2a05e5f08ad21d6aafaba58a7aba65.tar.gz
Merge branch 'mock-avahi'
Diffstat (limited to 'lib')
m---------lib/ext/wocky0
-rw-r--r--lib/gibber/gibber-bytestream-oob.c4
-rw-r--r--lib/gibber/gibber-oob-file-transfer.c1
-rw-r--r--lib/gibber/gibber-util.c20
-rw-r--r--lib/gibber/gibber-util.h2
5 files changed, 27 insertions, 0 deletions
diff --git a/lib/ext/wocky b/lib/ext/wocky
-Subproject b93eb03e0ba117392ecdc40b23ad9a54af1ce3a
+Subproject 697698e42a67057d176dd45d6b5f6cb98bb7b9e
diff --git a/lib/gibber/gibber-bytestream-oob.c b/lib/gibber/gibber-bytestream-oob.c
index 77cca4dd..805f397a 100644
--- a/lib/gibber/gibber-bytestream-oob.c
+++ b/lib/gibber/gibber-bytestream-oob.c
@@ -305,6 +305,10 @@ connect_to_url (GibberBytestreamOOB *self)
goto out;
}
+ /* FIXME: this is a hack until we get the normalization of v6-in-v4
+ * addresses in GLib. See bgo#646082 */
+ gibber_normalize_address (&(addr.storage));
+
addr.in.sin_port = g_htons ((guint16) portnum);
ll_transport = gibber_ll_transport_new ();
diff --git a/lib/gibber/gibber-oob-file-transfer.c b/lib/gibber/gibber-oob-file-transfer.c
index 50a1d943..217db7e8 100644
--- a/lib/gibber/gibber-oob-file-transfer.c
+++ b/lib/gibber/gibber-oob-file-transfer.c
@@ -516,6 +516,7 @@ create_transfer_offer (GibberOobFileTransfer *self,
}
address = g_socket_connection_get_local_address (conn, NULL);
+ address = gibber_normalize_socket_address (address);
addr = g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (address));
family = g_socket_address_get_family (address);
diff --git a/lib/gibber/gibber-util.c b/lib/gibber/gibber-util.c
index 6f5c5722..b1cf93aa 100644
--- a/lib/gibber/gibber-util.c
+++ b/lib/gibber/gibber-util.c
@@ -50,6 +50,26 @@ gibber_normalize_address (struct sockaddr_storage *addr)
}
}
+/* FIXME: this is a hack until we get the normalization of v6-in-v4
+ * addresses in GLib. See bgo#646082 */
+GSocketAddress *
+gibber_normalize_socket_address (GSocketAddress *addr)
+{
+ struct sockaddr_storage ss;
+
+ if (g_socket_address_get_family (addr) != G_SOCKET_FAMILY_IPV6)
+ return addr;
+
+ if (!g_socket_address_to_native (addr, &ss, sizeof (ss), NULL))
+ return addr;
+
+ g_object_unref (addr);
+
+ gibber_normalize_address (&ss);
+
+ return g_socket_address_new_from_native (&ss, sizeof (ss));
+}
+
/**
* gibber_strdiff:
* @left: The first string to compare (may be NULL)
diff --git a/lib/gibber/gibber-util.h b/lib/gibber/gibber-util.h
index d159e39e..bbd9032a 100644
--- a/lib/gibber/gibber-util.h
+++ b/lib/gibber/gibber-util.h
@@ -23,10 +23,12 @@
#include "gibber-sockets.h"
#include <glib.h>
+#include <gio/gio.h>
G_BEGIN_DECLS
void gibber_normalize_address (struct sockaddr_storage *addr);
+GSocketAddress * gibber_normalize_socket_address (GSocketAddress *addr);
gboolean gibber_strdiff (const gchar *left, const gchar *right);
G_END_DECLS