]> git.0d.be Git - empathy.git/commitdiff
Retry requesting aliases if it fails, it can happen if there is too many aliases...
authorXavier Claessens <xclaesse@src.gnome.org>
Sun, 16 Mar 2008 12:48:24 +0000 (12:48 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Sun, 16 Mar 2008 12:48:24 +0000 (12:48 +0000)
svn path=/trunk/; revision=798

libempathy/empathy-contact.c
libempathy/empathy-tp-contact-factory.c

index 893fabb5a3935ecbfea7b435b1dfa5eb90cbd448..ec91f3a00740cd3c5b26cdea1946a2a5ca86d420 100644 (file)
@@ -423,7 +423,7 @@ empathy_contact_set_name (EmpathyContact *contact,
        g_free (priv->name);
        priv->name = g_strdup (name);
        contact_set_ready_flag (contact, EMPATHY_CONTACT_READY_NAME,
-                               !G_STR_EMPTY (name));
+                               name != NULL);
 
        g_object_notify (G_OBJECT (contact), "name");
 }
index 1ff0c403b75ea8ea26fccbe7d091460adac7b130..929f2b2f56a0bea0987c5219133615ebcdfadd47 100644 (file)
@@ -215,13 +215,35 @@ tp_contact_factory_request_aliases_cb (TpConnection *connection,
                                       gpointer       user_data,
                                       GObject       *tp_factory)
 {
-       guint        *handles = user_data;
-       guint         i = 0;
-       const gchar **name;
+       EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+       guint                       *handles = user_data;
+       guint                        i = 0;
+       const gchar                **name;
 
        if (error) {
+               GArray handles_array;
+               guint  size = 0;
+
                empathy_debug (DEBUG_DOMAIN, "Error requesting aliases: %s",
                              error->message);
+
+               /* FIXME: Sometimes the dbus call timesout because CM takes
+                * too much time to request all aliases from the server,
+                * that's why we retry. */
+               while (handles[size] != 0) {
+                       size++;
+               }
+               handles = g_memdup (handles, size * sizeof (guint));
+               handles_array.len = size;
+               handles_array.data = (gchar*) handles;
+               
+               tp_cli_connection_interface_aliasing_call_request_aliases (priv->connection,
+                                                                          -1,
+                                                                          &handles_array,
+                                                                          tp_contact_factory_request_aliases_cb,
+                                                                          handles, g_free,
+                                                                          G_OBJECT (tp_factory));
+
                return;
        }