Fix bugs. Use directly the JingleSession to determine the recipient.
--- a/jingle-filetransfer/filetransfer.c Tue Aug 10 20:31:12 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c Tue Aug 10 21:35:43 2010 +0200
@@ -226,7 +226,7 @@
gchar *ressource, *recipientjid;
const gchar *namespaces[] = {NS_JINGLE, NS_JINGLE_APP_FT, NULL};
struct stat fileinfo;
- const gchar *myjid = lm_connection_get_jid(lconnection);
+ const gchar *myjid = g_strdup(lm_connection_get_jid(lconnection));
JingleFT *jft = g_new0(JingleFT, 1);
if (CURRENT_JID == NULL) { // CURRENT_JID = the jid of the user which has focus
@@ -244,7 +244,7 @@
sess = session_new(sid, myjid, recipientjid, JINGLE_SESSION_OUTGOING);
session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING);
- if (g_stat(args[0], &fileinfo) != 0) {
+ if (g_stat(filename, &fileinfo) != 0) {
scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: unable to stat %s", args[1]);
return;
}
--- a/jingle-ibb/ibb.c Tue Aug 10 20:31:12 2010 +0200
+++ b/jingle-ibb/ibb.c Tue Aug 10 21:35:43 2010 +0200
@@ -78,6 +78,8 @@
LmMessageNode *node = cn->transport;
const gchar *blocksize;
+ ibb = g_new0(JingleIBB, 1);
+
blocksize = lm_message_node_get_attribute(node, "block-size");
ibb->sid = lm_message_node_get_attribute(node, "sid");
--- a/jingle/send.c Tue Aug 10 20:31:12 2010 +0200
+++ b/jingle/send.c Tue Aug 10 21:35:43 2010 +0200
@@ -64,7 +64,7 @@
void jingle_send_session_accept(JingleNode *jn)
{
JingleNode accept = {0};
- JingleSession* sess;
+ JingleSession *sess;
JingleContent *cn;
GSList *child = NULL;
JingleAppFuncs *appfuncs;
@@ -75,7 +75,7 @@
JingleAckHandle *ackhandle;
accept.action = JINGLE_SESSION_ACCEPT;
- accept.responder = g_strdup_printf("%s", lm_connection_get_jid(lconnection));
+ accept.responder = g_strdup(lm_connection_get_jid(lconnection));
accept.sid = jn->sid;
accept.content = NULL;
@@ -148,8 +148,7 @@
JingleAckHandle *ackhandle;
GSList *listentry;
- LmMessage *mess = lm_message_from_jinglesession(js, js->to,
- JINGLE_SESSION_INITIATE);
+ LmMessage *mess = lm_message_from_jinglesession(js, JINGLE_SESSION_INITIATE);
lm_message_node_set_attribute(lm_message_node_get_child(mess->node, "jingle"),
"initiator", js->from);
--- a/jingle/sessions.c Tue Aug 10 20:31:12 2010 +0200
+++ b/jingle/sessions.c Tue Aug 10 21:35:43 2010 +0200
@@ -54,6 +54,7 @@
from = lm_message_node_get_attribute(jn->message->node, "from");
to = lm_message_node_get_attribute(jn->message->node, "to");
+
if (!from || !to) {
return NULL;
}
@@ -217,15 +218,17 @@
}
LmMessage *lm_message_from_jinglesession(const JingleSession *js,
- const gchar *to,
JingleAction action)
{
LmMessage* m;
LmMessageNode *jnode;
- const gchar *actionstr;
+ const gchar *actionstr, *recipient;
+
+ recipient = (js->origin == JINGLE_SESSION_INCOMING) ? js->from : js->to;
- m = lm_message_new_with_sub_type(to, LM_MESSAGE_TYPE_IQ,
+ m = lm_message_new_with_sub_type(recipient, LM_MESSAGE_TYPE_IQ,
LM_MESSAGE_SUB_TYPE_SET);
+
jnode = lm_message_node_add_child(m->node, "jingle", NULL);
lm_message_node_set_attribute(jnode, "xmlns", NS_JINGLE);
--- a/jingle/sessions.h Tue Aug 10 20:31:12 2010 +0200
+++ b/jingle/sessions.h Tue Aug 10 21:35:43 2010 +0200
@@ -96,7 +96,6 @@
const gchar *xmlns_app, gconstpointer app,
const gchar *to);
LmMessage *lm_message_from_jinglesession(const JingleSession *js,
- const gchar *to,
JingleAction action);
#endif