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 |