jingle-filetransfer/filetransfer.c
changeset 87 43e7d48f6d84
parent 85 0113d55cada6
child 88 8b12ebd75c1a
equal deleted inserted replaced
86:a994dc89a1fc 87:43e7d48f6d84
   216     /*GChecksum *md5 = g_checksum_new(G_CHECKSUM_MD5);
   216     /*GChecksum *md5 = g_checksum_new(G_CHECKSUM_MD5);
   217     guchar data[1024];
   217     guchar data[1024];
   218     gsize bytes_read;*/
   218     gsize bytes_read;*/
   219     JingleSession *sess;
   219     JingleSession *sess;
   220     gchar *sid = jingle_generate_sid();
   220     gchar *sid = jingle_generate_sid();
   221     gchar *ressource, *jid;
   221     gchar *ressource, *recipientjid;
   222     const gchar *namespaces[] = {NS_JINGLE, NS_JINGLE_APP_FT, NULL};
   222     const gchar *namespaces[] = {NS_JINGLE, NS_JINGLE_APP_FT, NULL};
   223     struct stat fileinfo;
   223     struct stat fileinfo;
   224     const gchar *myjid = settings_opt_get("jid");
   224     const gchar *myjid = lm_connection_get_jid(lconnection);
   225     JingleFT *jft = g_new0(JingleFT, 1);
   225     JingleFT *jft = g_new0(JingleFT, 1);
   226 
   226 
   227     sess = session_new(sid, myjid, myjid, JINGLE_SESSION_OUTGOING);
   227     if (CURRENT_JID == NULL) { // CURRENT_JID = the jid of the user which has focus
       
   228       scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: Please, choose a valid JID in the roster");
       
   229       return;
       
   230     }
       
   231     ressource = jingle_find_compatible_res(CURRENT_JID, namespaces);
       
   232     if (ressource == NULL)
       
   233       return;
       
   234 
       
   235     recipientjid = g_strdup_printf("%s/%s", CURRENT_JID, ressource);
       
   236 
       
   237     sess = session_new(sid, myjid, recipientjid, JINGLE_SESSION_OUTGOING);
   228     session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING);
   238     session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING);
   229 
   239 
   230     if (g_stat(args[0], &fileinfo) != 0) {
   240     if (g_stat(args[0], &fileinfo) != 0) {
   231       scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: unable to stat %s", args[1]);
   241       scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: unable to stat %s", args[1]);
   232       return;
   242       return;
   246     }
   256     }
   247     jft->hash = g_strdup(g_checksum_get_string(md5));
   257     jft->hash = g_strdup(g_checksum_get_string(md5));
   248     g_io_channel_seek_position(jft->outfile, 0, G_SEEK_SET, NULL);*/
   258     g_io_channel_seek_position(jft->outfile, 0, G_SEEK_SET, NULL);*/
   249     session_add_app(sess, "file", NS_JINGLE_APP_FT, jft);
   259     session_add_app(sess, "file", NS_JINGLE_APP_FT, jft);
   250 
   260 
   251     if (CURRENT_JID == NULL) {
   261 
   252       scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: Please, choose a valid JID in the roster");
   262     jingle_handle_app(sess, "file", NS_JINGLE_APP_FT, jft, recipientjid);
   253       return;
       
   254     }
       
   255     ressource = jingle_find_compatible_res(CURRENT_JID, namespaces);
       
   256     if (ressource == NULL)
       
   257       return;
       
   258 
       
   259     jid = g_strdup_printf("%s/%s", CURRENT_JID, ressource);
       
   260     jingle_handle_app(sess, "file", NS_JINGLE_APP_FT, jft, jid);
       
   261 
   263 
   262     g_free(ressource);
   264     g_free(ressource);
   263     //g_checksum_free(md5);
   265     //g_checksum_free(md5);
   264     g_free(sid);
   266     g_free(sid);
   265   }
   267   }
   282   else
   284   else
   283     node2 = lm_message_node_add_child(node2, "request", NULL);
   285     node2 = lm_message_node_add_child(node2, "request", NULL);
   284 
   286 
   285   node2 = lm_message_node_add_child(node2, "file", NULL);
   287   node2 = lm_message_node_add_child(node2, "file", NULL);
   286 
   288 
   287   if(!g_sprintf(size, "%li", jft->size))
   289   size = g_strdup_printf("%lli", jft->size);
   288     return;
       
   289   
   290   
   290   lm_message_node_set_attributes(node2, "xmlns", NS_SI_FT, "name", jft->name,
   291   lm_message_node_set_attributes(node2, "xmlns", NS_SI_FT, "name", jft->name,
   291                                  "size", size, NULL);
   292                                  "size", size, NULL);
   292   g_free(size);
   293   g_free(size);
   293   
   294