jingle/send.c
changeset 52 d803c882a182
parent 49 8dddfbe488b6
child 58 daafe5b8a48d
--- a/jingle/send.c	Tue Jul 13 17:14:57 2010 +0200
+++ b/jingle/send.c	Tue Jul 13 18:30:23 2010 +0200
@@ -28,21 +28,20 @@
 #include <jingle/jingle.h>
 #include <jingle/sessions.h>
 #include <jingle/send.h>
-#include <jingle/general-handlers.h>
 
-extern LmMessageHandler* jingle_ack_iq_handler;
 
 void jingle_send_session_terminate(JingleNode *jn, const gchar *reason)
 {
   LmMessage *r;
   LmMessageNode *err;
   JingleNode *reply = g_new0(JingleNode, 1);
-  ack_iq *elem;
+  JingleAckHandle *ackhandle;
 
   reply->action = JINGLE_SESSION_TERMINATE;
   reply->sid = jn->sid;
 
   r = lm_message_from_jinglenode(reply, lm_message_get_from(jn->message));
+  if (r == NULL) return;
 
   if (reason != NULL) { 
     // TODO check reason 
@@ -50,15 +49,13 @@
     lm_message_node_add_child(err, reason, NULL);
   }
 
-  if (r) {
-    elem->id = g_strdup(lm_message_get_id(r));
-    elem->callback = NULL;
-    elem->udata = NULL;
-    add_ack_wait(elem);
+  ackhandle = g_new0(JingleAckHandle, 1);
+  ackhandle->callback = NULL;
+  ackhandle->user_data = NULL;
 
-    lm_connection_send_with_reply(lconnection, r, jingle_ack_iq_handler, NULL);
-    lm_message_unref(r);
-  }
+  lm_connection_send_with_reply(lconnection, r,
+                                jingle_new_ack_handler(ackhandle), NULL);
+  lm_message_unref(r);
 }
 
 void jingle_send_session_accept(JingleNode *jn)
@@ -72,7 +69,7 @@
   gconstpointer description, transport;
   const gchar *xmlns;
   GError *err = NULL;
-  ack_iq *elem;
+  JingleAckHandle *ackhandle;
  
   accept.action = JINGLE_SESSION_ACCEPT;
   accept.responder = g_strdup_printf("%s/%s",
@@ -114,12 +111,11 @@
   accept.message = lm_message_from_jinglenode(&accept,
                                               lm_message_get_from(jn->message));
   if (accept.message) {
-	 elem->id = g_strdup(lm_message_get_id(accept.message));
-    elem->callback = NULL;
-    elem->udata = NULL;
-    add_ack_wait(elem);
+    ackhandle = g_new0(JingleAckHandle, 1);
+    ackhandle->callback = NULL;
+    ackhandle->user_data = NULL;
     lm_connection_send_with_reply(lconnection, accept.message,
-                                  jingle_ack_iq_handler, &err);
+                                  jingle_new_ack_handler(ackhandle), NULL);
     lm_message_unref(accept.message);
   }
 }