jingle-filetransfer/filetransfer.c
changeset 81 8b6320ad470b
parent 80 1c2ef2c5debe
child 83 d5c5e9be53cb
equal deleted inserted replaced
80:1c2ef2c5debe 81:8b6320ad470b
    42 
    42 
    43 #include "filetransfer.h"
    43 #include "filetransfer.h"
    44 
    44 
    45 
    45 
    46 gconstpointer jingle_ft_check(JingleContent *cn, GError **err);
    46 gconstpointer jingle_ft_check(JingleContent *cn, GError **err);
    47 void jingle_ft_handle(JingleAction act, gconstpointer data, LmMessageNode *node);
    47 void jingle_ft_tomessage(gconstpointer data, LmMessageNode *node);
    48 gboolean jingle_ft_handle_data(gconstpointer data, const gchar *data2, guint len);
    48 gboolean jingle_ft_handle_data(gconstpointer data, const gchar *data2, guint len);
    49 static gboolean is_md5_hash(const gchar *hash);
    49 static gboolean is_md5_hash(const gchar *hash);
    50 static void jingle_ft_init(void);
    50 static void jingle_ft_init(void);
    51 static void jingle_ft_uninit(void);
    51 static void jingle_ft_uninit(void);
    52 
    52 
    53 const gchar *deps[] = { "jingle", NULL };
    53 const gchar *deps[] = { "jingle", NULL };
    54 
    54 
    55 JingleAppFuncs funcs = {
    55 JingleAppFuncs funcs = {
    56   jingle_ft_check,
    56   jingle_ft_check,
    57   jingle_ft_handle,
    57   jingle_ft_tomessage,
    58   jingle_ft_handle_data
    58   jingle_ft_handle_data
    59 };
    59 };
    60 
    60 
    61 module_info_t info_jingle_filetransfer = {
    61 module_info_t info_jingle_filetransfer = {
    62   .branch          = MCABBER_BRANCH,
    62   .branch          = MCABBER_BRANCH,
   261   }
   261   }
   262 
   262 
   263   free_arg_lst(args);
   263   free_arg_lst(args);
   264 }
   264 }
   265 
   265 
   266 void jingle_ft_handle(JingleAction act, gconstpointer data, LmMessageNode *node)
   266 void jingle_ft_tomessage(gconstpointer data, LmMessageNode *node)
   267 {
   267 {
   268   if (act == JINGLE_SESSION_INITIATE) {
   268   JingleFT *jft = (JingleFT*) data;
   269     JingleFT *jft = (JingleFT*) data;
   269   if (lm_message_node_get_child(node, "description") != NULL)
   270     if (lm_message_node_get_child(node, "description") != NULL)
   270     return;
   271       return;
   271 
   272   
   272   LmMessageNode *node2 = lm_message_node_add_child(node, "description", NULL);
   273     LmMessageNode *node2 = lm_message_node_add_child(node, "description", NULL);
   273   lm_message_node_set_attribute(node2, "xmlns", NS_JINGLE_APP_FT);
   274     lm_message_node_set_attribute(node2, "xmlns", NS_JINGLE_APP_FT);
   274   if (jft->type == JINGLE_FT_OFFER)
   275     if (jft->type == JINGLE_FT_OFFER)
   275     node2 = lm_message_node_add_child(node2, "offer", NULL);
   276       node2 = lm_message_node_add_child(node2, "offer", NULL);
   276   else
   277     else
   277     node2 = lm_message_node_add_child(node2, "request", NULL);
   278       node2 = lm_message_node_add_child(node2, "request", NULL);
   278 
   279     
   279   node2 = lm_message_node_add_child(node2, "file", NULL);
   280     node2 = lm_message_node_add_child(node2, "file", NULL);
   280 
   281     
   281   lm_message_node_set_attributes(node2, "xmlns", NS_SI_FT, "name", jft->name,
   282     lm_message_node_set_attributes(node2, "xmlns", NS_SI_FT, "name", jft->name,
   282                                  "size", jft->size, NULL);
   283                                    "size", jft->size, NULL);
   283   if (jft->hash != NULL)
   284     if (jft->hash != NULL)
   284     lm_message_node_set_attribute(node2, "hash", jft->hash);
   285       lm_message_node_set_attribute(node2, "hash", jft->hash);
   285 
   286     
   286   if (jft->desc != NULL)
   287     if (jft->desc != NULL)
   287     lm_message_node_add_child(node2, "desc", jft->desc);
   288       lm_message_node_add_child(node2, "desc", jft->desc);
   288 
   289     
   289   //if (jft->data != 0)
   290     //if (jft->data != 0)
       
   291       
       
   292   }
       
   293 }
   290 }
   294 
   291 
   295 static void jingle_ft_init(void)
   292 static void jingle_ft_init(void)
   296 {
   293 {
   297   jingle_register_app(NS_JINGLE_APP_FT, &funcs, JINGLE_TRANSPORT_STREAMING);
   294   jingle_register_app(NS_JINGLE_APP_FT, &funcs, JINGLE_TRANSPORT_STREAMING);