[telepathy-salut/master] salut-connection: factor out announce_self_caps

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Wed Apr 1 04:10:34 PDT 2009


---
 src/salut-connection.c |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/salut-connection.c b/src/salut-connection.c
index af2d284..9ea5ffd 100644
--- a/src/salut-connection.c
+++ b/src/salut-connection.c
@@ -921,6 +921,26 @@ _contact_manager_contact_status_changed (SalutConnection *self,
     g_hash_table_destroy (ps.optional_arguments);
 }
 
+static gboolean
+announce_self_caps (SalutConnection *self,
+                    GError **error)
+{
+  SalutConnectionPrivate *priv = SALUT_CONNECTION_GET_PRIVATE (self);
+  gchar *caps_hash;
+
+  caps_hash = caps_hash_compute_from_self_presence (priv->self);
+
+  if (!salut_self_set_caps (priv->self, GIBBER_TELEPATHY_NS_CAPS, "sha-1",
+        caps_hash, error))
+    {
+      g_free (caps_hash);
+      return FALSE;
+    }
+
+  g_free (caps_hash);
+  return TRUE;
+}
+
 static void
 _self_established_cb (SalutSelf *s, gpointer data)
 {
@@ -1908,7 +1928,6 @@ salut_connection_set_self_capabilities (
   guint i;
   GHashTable *save_caps;
   GError *error = NULL;
-  gchar *caps_hash;
 
   TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
 
@@ -1936,17 +1955,13 @@ salut_connection_set_self_capabilities (
     }
 
   /* XEP-0115 version 1.5 uses a verification string in the 'ver' attribute */
-  caps_hash = caps_hash_compute_from_self_presence (priv->self);
-
-  if (!salut_self_set_caps (priv->self, GIBBER_TELEPATHY_NS_CAPS, "sha-1",
-        caps_hash, &error))
+  if (!announce_self_caps (self, &error))
     {
-      g_free (caps_hash);
       salut_presence_cache_free_cache_entry (save_caps);
       dbus_g_method_return_error (context, error);
+      g_error_free (error);
       return;
     }
-  g_free (caps_hash);
 
   _emit_contact_capabilities_changed (self, base->self_handle,
                                       save_caps,
-- 
1.5.6.5




More information about the telepathy-commits mailing list