[telepathy-gabble/master] add a second FT channel class adversting we support MD5 hashes

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Mon Mar 30 08:23:26 PDT 2009


---
 src/ft-manager.c                                   |   13 ++++++++++++-
 .../twisted/file-transfer/file_transfer_helper.py  |   13 +++++++++++--
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/ft-manager.c b/src/ft-manager.c
index ec6b4aa..a99d84c 100644
--- a/src/ft-manager.c
+++ b/src/ft-manager.c
@@ -421,12 +421,13 @@ static const gchar * const file_transfer_channel_fixed_properties[] = {
 
 static const gchar * const file_transfer_channel_allowed_properties[] =
 {
+   /* ContentHashType has to be first so we can easily skip it when needed */
+   TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".ContentHashType",
    TP_IFACE_CHANNEL ".TargetHandle",
    TP_IFACE_CHANNEL ".TargetID",
    TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".ContentType",
    TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".Filename",
    TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".Size",
-   TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".ContentHashType",
    TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".ContentHash",
    TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".Description",
    TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".Date",
@@ -441,6 +442,7 @@ gabble_ft_manager_foreach_channel_class (TpChannelManager *manager,
   GHashTable *table;
   GValue *value;
 
+  /* general FT class */
   table = g_hash_table_new_full (g_str_hash, g_str_equal,
       NULL, (GDestroyNotify) tp_g_value_slice_free);
 
@@ -455,6 +457,15 @@ gabble_ft_manager_foreach_channel_class (TpChannelManager *manager,
   func (manager, table, file_transfer_channel_allowed_properties,
       user_data);
 
+  /* MD5 HashType class */
+  g_hash_table_insert (table,
+      TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER ".ContentHashType",
+      tp_g_value_slice_new_uint (TP_FILE_HASH_TYPE_MD5));
+
+  /* skip ContentHashType in allowed properties */
+  func (manager, table, file_transfer_channel_allowed_properties + 1,
+      user_data);
+
   g_hash_table_destroy (table);
 }
 
diff --git a/tests/twisted/file-transfer/file_transfer_helper.py b/tests/twisted/file-transfer/file_transfer_helper.py
index 8b77878..583f032 100644
--- a/tests/twisted/file-transfer/file_transfer_helper.py
+++ b/tests/twisted/file-transfer/file_transfer_helper.py
@@ -263,11 +263,20 @@ class SendFileTest(FileTransferTest):
         properties = self.conn.GetAll(cs.CONN_IFACE_REQUESTS,
                 dbus_interface=cs.PROPERTIES_IFACE)
 
+        # general FT class
         assert ({cs.CHANNEL_TYPE: cs.CHANNEL_TYPE_FILE_TRANSFER,
                  cs.TARGET_HANDLE_TYPE: cs.HT_CONTACT},
+                [cs.FT_CONTENT_HASH_TYPE, cs.TARGET_HANDLE, cs.TARGET_ID, cs.FT_CONTENT_TYPE,
+                 cs.FT_FILENAME, cs.FT_SIZE, cs.FT_CONTENT_HASH, cs.FT_DESCRIPTION, cs.FT_DATE]
+             ) in properties.get('RequestableChannelClasses'),\
+                     properties['RequestableChannelClasses']
+
+        # FT class with MD5 as HashType
+        assert ({cs.CHANNEL_TYPE: cs.CHANNEL_TYPE_FILE_TRANSFER,
+                 cs.TARGET_HANDLE_TYPE: cs.HT_CONTACT,
+                 cs.FT_CONTENT_HASH_TYPE: cs.FILE_HASH_TYPE_MD5},
                 [cs.TARGET_HANDLE, cs.TARGET_ID, cs.FT_CONTENT_TYPE, cs.FT_FILENAME,
-                 cs.FT_SIZE, cs.FT_CONTENT_HASH_TYPE, cs.FT_CONTENT_HASH,
-                 cs.FT_DESCRIPTION, cs.FT_DATE]
+                 cs.FT_SIZE, cs.FT_CONTENT_HASH, cs.FT_DESCRIPTION, cs.FT_DATE]
              ) in properties.get('RequestableChannelClasses'),\
                      properties['RequestableChannelClasses']
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list