jingle/action-handlers.c
changeset 48 3c08b78be871
parent 47 964b3ebeba8d
child 52 d803c882a182
equal deleted inserted replaced
47:964b3ebeba8d 48:3c08b78be871
    33 #include <jingle/register.h>
    33 #include <jingle/register.h>
    34 #include <jingle/send.h>
    34 #include <jingle/send.h>
    35 #include <jingle/action-handlers.h>
    35 #include <jingle/action-handlers.h>
    36 #include <jingle/general-handlers.h>
    36 #include <jingle/general-handlers.h>
    37 
    37 
       
    38 extern LmMessageHandler* jingle_ack_iq_handler;
       
    39 
    38 void handle_content_accept(JingleNode *jn)
    40 void handle_content_accept(JingleNode *jn)
    39 {
    41 {
    40   GError *err = NULL;
    42   GError *err = NULL;
    41   GSList *child = NULL;
    43   GSList *child = NULL;
    42   JingleContent *cn;
    44   JingleContent *cn;
    84   const gchar *xmlns;
    86   const gchar *xmlns;
    85   JingleSession *sess;
    87   JingleSession *sess;
    86   JingleNode accept, reject;
    88   JingleNode accept, reject;
    87   JingleContent tmp_cn;
    89   JingleContent tmp_cn;
    88   LmMessage *r;
    90   LmMessage *r;
    89   
    91   ack_iq *elem;
    90   
    92 
    91   if (!check_contents(jn, &err)) {
    93   if (!check_contents(jn, &err)) {
    92     scr_log_print(LPRINT_DEBUG, "jingle: One of the content element was invalid (%s)",
    94     scr_log_print(LPRINT_DEBUG, "jingle: One of the content element was invalid (%s)",
    93                   err->message);
    95                   err->message);
    94     jingle_send_iq_error(jn->message, "cancel", "bad-request", NULL);
    96     jingle_send_iq_error(jn->message, "cancel", "bad-request", NULL);
    95     return;
    97     return;
   143   }
   145   }
   144   
   146   
   145   if (g_slist_length(accept.content) != 0) {
   147   if (g_slist_length(accept.content) != 0) {
   146     r = lm_message_from_jinglenode(&accept, lm_message_get_from(jn->message));
   148     r = lm_message_from_jinglenode(&accept, lm_message_get_from(jn->message));
   147     if (r) {
   149     if (r) {
   148       lm_connection_send_with_reply(lconnection, r,NULL, NULL);
   150       elem->id = g_strdup(lm_message_get_id(r));
       
   151       elem->callback = NULL;
       
   152       elem->udata = NULL;
       
   153       add_ack_wait(elem);
       
   154       // TODO: errors
       
   155       lm_connection_send_with_reply(lconnection, r, jingle_ack_iq_handler, &err);
   149       lm_message_unref(r);
   156       lm_message_unref(r);
   150     }
   157     }
   151   }
   158   }
   152   
   159   
   153   if (g_slist_length(reject.content) != 0) {
   160   if (g_slist_length(reject.content) != 0) {
   154     r = lm_message_from_jinglenode(&reject, lm_message_get_from(jn->message));
   161     r = lm_message_from_jinglenode(&reject, lm_message_get_from(jn->message));
   155     if (r) {
   162     if (r) {
   156       lm_connection_send(lconnection, r, NULL);
   163       elem->id = g_strdup(lm_message_get_id(r));
       
   164       elem->callback = NULL;
       
   165       elem->udata = NULL;
       
   166       add_ack_wait(elem);
       
   167       // TODO: errors
       
   168       lm_connection_send_with_reply(lconnection, r, jingle_ack_iq_handler, &err);
   157       lm_message_unref(r);
   169       lm_message_unref(r);
   158     }
   170     }
   159   }
   171   }
   160 }
   172 }
   161 
   173