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]); |