jingle-filetransfer/filetransfer.c
changeset 69 a56a2535ab2e
parent 68 ae8b0d03887e
child 70 54e86a92fe7f
equal deleted inserted replaced
68:ae8b0d03887e 69:a56a2535ab2e
   217     scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: try to sent %s!",
   217     scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: try to sent %s!",
   218                  args[1]);
   218                  args[1]);
   219     // Create a new session for send a file
   219     // Create a new session for send a file
   220     {
   220     {
   221       JingleSession *sess;
   221       JingleSession *sess;
       
   222       GChecksum *md5 = g_checksum_new(G_CHECKSUM_MD5);
   222       gchar *sid = new_sid();
   223       gchar *sid = new_sid();
       
   224       guchar data[1024];
       
   225       gsize bytes_read, total = 0;
   223       const gchar *jid = settings_opt_get("jid");
   226       const gchar *jid = settings_opt_get("jid");
   224       JingleFT *jft = g_new0(JingleFT, 1);
   227       JingleFT *jft = g_new0(JingleFT, 1);
   225       sess = session_new(sid, jid, jid);
   228       sess = session_new(sid, jid, jid);
   226       session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING);
   229       session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING);
   227       
   230       
   228       jft->name = g_strdup(args[1]);
   231       jft->name = g_path_get_basename(args[1]);
   229       jft->hash = NULL;
       
   230       jft->date = 0;
   232       jft->date = 0;
   231       jft->size = 0;
   233       jft->size = 0;
   232       jft->outfile = NULL;
   234       jft->outfile = g_io_channel_new_file (args[1], "r", NULL);
       
   235       g_io_channel_set_encoding(jft->outfile, NULL, NULL);
       
   236       while (g_io_channel_read_chars(jft->outfile, (gchar*)data, 1024, &bytes_read, NULL) != G_IO_STATUS_EOF) {
       
   237         jft->size+=bytes_read;
       
   238         g_checksum_update(md5, data, bytes_read);
       
   239       }
       
   240       jft->hash = g_strdup(g_checksum_get_string(md5));
   233       session_add_app(sess, "file", NS_JINGLE_APP_FT, jft);
   241       session_add_app(sess, "file", NS_JINGLE_APP_FT, jft);
   234 
   242       g_checksum_free(md5);
   235 
       
   236       g_free(sid);
   243       g_free(sid);
   237     }  
   244     }  
   238   } else if (!g_strcmp0(args[0], "request")) {
   245   } else if (!g_strcmp0(args[0], "request")) {
   239     scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: try to request %s!",
   246     scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: try to request %s!",
   240                  args[1]);
   247                  args[1]);