[telepathy-gabble/telepathy-gabble-0.8] connection_iq_disco_cb: factor out _gabble_connection_send_or_complain and add_feature_node

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Sep 8 08:30:26 PDT 2009


---
 src/connection.c |   37 +++++++++++++++++++++++++++----------
 1 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/src/connection.c b/src/connection.c
index fe9ce90..7eaaf54 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -1580,6 +1580,19 @@ _gabble_connection_acknowledge_set_iq (GabbleConnection *conn,
     }
 }
 
+/* Send @message on @self; ignore errors, other than logging @complaint on
+ * failure.
+ */
+static void
+_gabble_connection_send_or_complain (GabbleConnection *self,
+    LmMessage *message,
+    const gchar *complaint)
+{
+  if (!lm_connection_send (self->lmconn, message, NULL))
+    {
+      DEBUG ("%s", complaint);
+    }
+}
 
 /**
  * _gabble_connection_send_iq_error
@@ -1620,6 +1633,17 @@ _gabble_connection_send_iq_error (GabbleConnection *conn,
   lm_message_unref (msg);
 }
 
+static void
+add_feature_node (LmMessageNode *result_query,
+    const gchar *namespace)
+{
+  LmMessageNode *feature_node;
+
+  feature_node = lm_message_node_add_child (result_query, "feature",
+      NULL);
+  lm_message_node_set_attribute (feature_node, "var", namespace);
+}
+
 /**
  * connection_iq_disco_cb
  *
@@ -1701,25 +1725,18 @@ connection_iq_disco_cb (LmMessageHandler *handler,
       for (i = features; NULL != i; i = i->next)
         {
           const Feature *feature = (const Feature *) i->data;
-          LmMessageNode *feature_node;
 
           /* When BUNDLE_VOICE_V1 is requested, only send the bundle */
           if (!tp_strdiff (suffix, BUNDLE_VOICE_V1) &&
               feature->feature_type != FEATURE_BUNDLE_COMPAT)
             continue;
 
-          /* otherwise (no node or hash), put all features */
-          feature_node = lm_message_node_add_child (result_query, "feature",
-              NULL);
-          lm_message_node_set_attribute (feature_node, "var", feature->ns);
+          add_feature_node (result_query, feature->ns);
         }
 
       NODE_DEBUG (result_iq, "sending disco response");
-
-      if (!lm_connection_send (self->lmconn, result, NULL))
-        {
-          DEBUG ("sending disco response failed");
-        }
+      _gabble_connection_send_or_complain (self, result,
+          "sending disco response failed");
     }
   else
     {
-- 
1.5.6.5




More information about the telepathy-commits mailing list