JS5B: to message
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Sat, 14 Aug 2010 12:00:59 +0200
changeset 118 f3408f4fe61a
parent 117 bd54d1dba1ad
child 119 0b9a7b505079
JS5B: to message
jingle-ibb/ibb.c
jingle-socks5/socks5.c
jingle/jingle.h
jingle/send.c
--- a/jingle-ibb/ibb.c	Sat Aug 14 06:11:41 2010 +0200
+++ b/jingle-ibb/ibb.c	Sat Aug 14 12:00:59 2010 +0200
@@ -214,13 +214,13 @@
 {
   JingleIBB *jibb = (JingleIBB*)data;
   JingleAckHandle *ackhandle;
+  LmMessageNode *node;
   gchar *base64 = g_base64_encode((const guchar *)buf, size);
   gchar *seq = g_strdup_printf("%" G_GINT64_FORMAT, jibb->seq);
   
   LmMessage *r = lm_message_new_with_sub_type(to, LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_SET);
-  LmMessageNode *node = lm_message_get_node(r);
-  lm_message_node_add_child(node, "data", NULL);
-  node = lm_message_node_get_child(node, "data");
+  LmMessageNode *node2 = lm_message_get_node(r);
+  node = lm_message_node_add_child(node2, "data", NULL);
   lm_message_node_set_attributes(node, "xmlns", NS_TRANSPORT_IBB,
                                  "sid", jibb->sid,
                                  "seq", seq,
--- a/jingle-socks5/socks5.c	Sat Aug 14 06:11:41 2010 +0200
+++ b/jingle-socks5/socks5.c	Sat Aug 14 12:00:59 2010 +0200
@@ -41,7 +41,8 @@
 void jingle_socks5_tomessage(gconstpointer data, LmMessageNode *node);
 const gchar* jingle_socks5_xmlns(void);
 gconstpointer jingle_socks5_new(void);
-void jingle_socks5_send(session_content *sc, const gchar *to, gconstpointer data, gchar *buf, gsize size);
+void jingle_socks5_send(session_content *sc, const gchar *to,
+                        gconstpointer data, gchar *buf, gsize size);
 
 static void jingle_socks5_init(void);
 static void jingle_socks5_uninit(void);
@@ -149,6 +150,43 @@
   return (gconstpointer) js5b;
 }
 
+void jingle_socks5_tomessage(gconstpointer data, LmMessageNode *node)
+{
+  JingleSocks5 *js5 = (JingleSocks5*)data;
+  JingleS5BCandidate *js5c;
+  
+  LmMessageNode *node2, *node3;
+  gchar *port;
+  gchar *priority;
+  GSList *el;
+  
+  if (lm_message_node_get_child(node, "transport") != NULL)
+    return;
+  
+  node2 = lm_message_node_add_child(node, "transport", NULL);
+
+  lm_message_node_set_attributes(node2, "xmlns", NS_JINGLE_TRANSPORT_SOCKS5,
+                                 "sid", js5->sid,
+                                 "mode", jingle_s5b_modes[js5->mode],
+                                 NULL);
+  for (el = js5->candidates; el; el = el->next) {
+    js5c = (JingleS5BCandidate*) el->data;
+    node3 = lm_message_node_add_child(node2, "candidate", NULL);
+    
+    port = g_strdup_printf("%" G_GUINT16_FORMAT, js5c->port);
+    priority = g_strdup_printf("%" G_GUINT64_FORMAT, js5c->priority);
+    
+    lm_message_node_set_attributes(node3, "cid", js5c->cid,
+                                   "host", js5c->host,
+                                   "jid", js5c->jid,
+                                   "port", port,
+                                   "priority", priority,
+                                   "type", jingle_s5b_types[js5c->type],
+                                   NULL);
+    g_free(port);
+    g_free(priority);
+  }
+}
 
 static void jingle_socks5_init(void)
 {
--- a/jingle/jingle.h	Sat Aug 14 06:11:41 2010 +0200
+++ b/jingle/jingle.h	Sat Aug 14 12:00:59 2010 +0200
@@ -108,7 +108,7 @@
   void (*handler)(JingleNode *);
 };
 
-typedef void (*JingleAckCallback) (LmMessage *, gpointer *);
+typedef void (*JingleAckCallback) (LmMessage *, gpointer);
 
 typedef struct {
   JingleAckCallback callback;
--- a/jingle/send.c	Sat Aug 14 06:11:41 2010 +0200
+++ b/jingle/send.c	Sat Aug 14 12:00:59 2010 +0200
@@ -35,21 +35,19 @@
 void jingle_send_session_terminate(JingleSession *js, const gchar *reason)
 {
   JingleAckHandle *ackhandle;
-
+  LmMessageNode *node2;
   LmMessage *r = lm_message_new_with_sub_type(js->to, LM_MESSAGE_TYPE_IQ,
                                               LM_MESSAGE_SUB_TYPE_SET);
   LmMessageNode *node = lm_message_get_node(r);
-  lm_message_node_add_child(node, "jingle", NULL);
-  node = lm_message_node_get_child(node, "jingle");
-  lm_message_node_set_attributes(node, "xmlns", NS_JINGLE,
+  node2 = lm_message_node_add_child(node, "jingle", NULL);
+  lm_message_node_set_attributes(node2, "xmlns", NS_JINGLE,
                                  "action", "session-terminate",
                                  "sid", js->sid,
                                  NULL);
   if (r == NULL) return;
 
   if (reason != NULL) { 
-    lm_message_node_add_child(node, "reason", NULL);
-    node = lm_message_node_get_child(node, "reason");
+    node = lm_message_node_add_child(node2, "reason", NULL);
     lm_message_node_add_child(node, reason, NULL);
   }
 
@@ -62,7 +60,7 @@
   lm_message_unref(r);
 }
 
-static void jingle_handle_ack_iq_sa(LmMessage *mess, gpointer *data)
+static void jingle_handle_ack_iq_sa(LmMessage *mess, gpointer data)
 {
   LmMessageNode *node;
   const gchar *type, *cause;
@@ -133,14 +131,14 @@
   if (mess) {
     ackhandle = g_new0(JingleAckHandle, 1);
     ackhandle->callback = jingle_handle_ack_iq_sa;
-    ackhandle->user_data = (gpointer*)sess;
+    ackhandle->user_data = (gpointer)sess;
     lm_connection_send_with_reply(lconnection, mess,
                                   jingle_new_ack_handler(ackhandle), NULL);
     lm_message_unref(mess);
   }
 }
 
-static void jingle_handle_ack_iq_si(LmMessage *mess, gpointer *data)
+static void jingle_handle_ack_iq_si(LmMessage *mess, gpointer data)
 {
   LmMessageNode *node;
   const gchar *type, *cause;
@@ -172,7 +170,7 @@
   if (mess) {
     ackhandle = g_new0(JingleAckHandle, 1);
     ackhandle->callback = jingle_handle_ack_iq_si;
-    ackhandle->user_data = (gpointer*)js;
+    ackhandle->user_data = (gpointer)js;
     lm_connection_send_with_reply(lconnection, mess,
                                   jingle_new_ack_handler(ackhandle), NULL);
     lm_message_unref(mess);