[Telepathy-commits] [telepathy-salut/master] gibber_bytestream_direct_initiate: try all priv->addresses if the first one does not work (implement the "FIXME")
Alban Crequy
alban.crequy at collabora.co.uk
Mon Nov 24 09:12:38 PST 2008
---
lib/gibber/gibber-bytestream-direct.c | 24 ++++++++++++++----------
1 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/lib/gibber/gibber-bytestream-direct.c b/lib/gibber/gibber-bytestream-direct.c
index 4a7a52d..772b05e 100644
--- a/lib/gibber/gibber-bytestream-direct.c
+++ b/lib/gibber/gibber-bytestream-direct.c
@@ -629,6 +629,8 @@ gibber_bytestream_direct_initiate (GibberBytestreamIface *bytestream)
} addr;
GibberBytestreamDirectPrivate *priv =
GIBBER_BYTESTREAM_DIRECT_GET_PRIVATE (self);
+ int i;
+ gboolean ret;
DEBUG ("Called.");
@@ -642,19 +644,21 @@ gibber_bytestream_direct_initiate (GibberBytestreamIface *bytestream)
return FALSE;
}
- /* Use the first address for now
- * FIXME: it should try the other addresses of the array if the first does
- * not work. */
- addr.storage = g_array_index (priv->addresses, struct sockaddr_storage, 0);
-
- addr.in6.sin6_port = g_htons ((guint16) priv->portnum);
-
ll_transport = gibber_ll_transport_new ();
set_transport (self, GIBBER_TRANSPORT (ll_transport));
- gibber_ll_transport_open_sockaddr (ll_transport,
- &addr.storage, NULL);
- return TRUE;
+ ret = FALSE;
+ for (i = 0 ; i < priv->addresses->len && !ret ; i++)
+ {
+ addr.storage = g_array_index (priv->addresses, struct sockaddr_storage,
+ i);
+ addr.in6.sin6_port = g_htons ((guint16) priv->portnum);
+
+ ret = gibber_ll_transport_open_sockaddr (ll_transport, &addr.storage,
+ NULL);
+ }
+
+ return ret;
}
static void
--
1.5.6.5
More information about the Telepathy-commits
mailing list