Include config.h. The file transfert module now add the corresponding
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Mon, 07 Jun 2010 19:15:28 +0200
changeset 15 61ffa66f8288
parent 14 77966ed56e14
child 16 cb085682970f
Include config.h. The file transfert module now add the corresponding feature.
jingle-filetransfert/CMakeLists.txt
jingle-filetransfert/filetransfert.c
jingle-filetransfert/filetransfert.h
jingle/CMakeLists.txt
jingle/action-handlers.c
jingle/action-handlers.h
jingle/jingle.c
jingle/jingle.h
--- a/jingle-filetransfert/CMakeLists.txt	Sun Jun 06 23:19:47 2010 +0200
+++ b/jingle-filetransfert/CMakeLists.txt	Mon Jun 07 19:15:28 2010 +0200
@@ -1,4 +1,4 @@
 add_library(jingle-filetransfert MODULE filetransfert.c)
 set_target_properties(jingle-filetransfert PROPERTIES COMPILE_FLAGS "-Wall")
-include_directories(${CMAKE_SOURCE_DIR}/jingle)
+include_directories(${CMAKE_SOURCE_DIR}/jingle ..)
 install(TARGETS jingle-filetransfert DESTINATION lib/mcabber)
--- a/jingle-filetransfert/filetransfert.c	Sun Jun 06 23:19:47 2010 +0200
+++ b/jingle-filetransfert/filetransfert.c	Mon Jun 07 19:15:28 2010 +0200
@@ -19,12 +19,17 @@
  * USA
  */
 
+#include "config.h"
+
 #include <glib.h>
 
 #include <mcabber/modules.h>
+#include <mcabber/xmpp_helper.h>
 
 #include <jingle.h>
 
+#include "filetransfert.h"
+
 
 static void jingleft_init(void);
 static void jingleft_uninit(void);
@@ -35,7 +40,7 @@
 module_info_t info_jingle_filetransfert = {
   .branch          = MCABBER_BRANCH,
   .api             = MCABBER_API_VERSION,
-  .version         = MCABBER_VERSION,
+  .version         = PROJECT_VERSION,
   .description     = "Jingle File Transfert (XEP-0234)\n",
   .requires        = deps,
   .init            = jingleft_init,
@@ -46,10 +51,10 @@
 
 static void jingleft_init(void)
 {
-  
+  xmpp_add_feature(NS_JINGLE_APP_FT);
 }
 
 static void jingleft_uninit(void)
 {
-  
+  xmpp_del_feature(NS_JINGLE_APP_FT);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jingle-filetransfert/filetransfert.h	Mon Jun 07 19:15:28 2010 +0200
@@ -0,0 +1,6 @@
+#ifndef __JINGLEFT_H__
+#define __JINGLEFT_H__ 1
+
+#define NS_JINGLE_APP_FT "urn:xmpp:jingle:apps:file-transfer:1"
+
+#endif
--- a/jingle/CMakeLists.txt	Sun Jun 06 23:19:47 2010 +0200
+++ b/jingle/CMakeLists.txt	Mon Jun 07 19:15:28 2010 +0200
@@ -1,5 +1,5 @@
 add_library(jingle MODULE jingle.c check.c register.c)
 set_target_properties(jingle PROPERTIES COMPILE_FLAGS "-Wall")
-include_directories(${LM_INCLUDE_DIRS})
+include_directories(${LM_INCLUDE_DIRS} ..)
 target_link_libraries(jingle ${LM_LIBRARIES})
 install(TARGETS jingle DESTINATION lib/mcabber)
--- a/jingle/action-handlers.c	Sun Jun 06 23:19:47 2010 +0200
+++ b/jingle/action-handlers.c	Mon Jun 07 19:15:28 2010 +0200
@@ -24,8 +24,12 @@
 #include "jingle.h"
 #include "check.h"
 
-void handle_session_initiate(LmMessage *m, JingleNode *jn, GError *err)
+
+void handle_session_initiate(LmMessage *m, JingleNode *jn)
 {
-  // do stuff here
+  // a session-initiate message must contains at least one <content> element
+  if (g_list_length(jn->content) < 1) {
+    jingle_send_iq_error(message, "cancel", "bad-request", NULL);
+  }
   
 }
--- a/jingle/action-handlers.h	Sun Jun 06 23:19:47 2010 +0200
+++ b/jingle/action-handlers.h	Mon Jun 07 19:15:28 2010 +0200
@@ -5,6 +5,6 @@
 #include <loudmouth/loudmouth.h>
 
 
-void handle_session_initiate(LmMessage *m, LmMessageNode *j);
+void handle_session_initiate(LmMessage *m, JingleNode *jn);
 
 #endif
--- a/jingle/jingle.c	Sun Jun 06 23:19:47 2010 +0200
+++ b/jingle/jingle.c	Mon Jun 07 19:15:28 2010 +0200
@@ -19,6 +19,8 @@
  * USA
  */
 
+#include "config.h"
+
 #include <glib.h>
 #include <loudmouth/loudmouth.h>
 
@@ -31,6 +33,7 @@
 
 #include "jingle.h"
 #include "check.h"
+#include "action-handlers.h"
 #include "register.h"
 
 
@@ -61,7 +64,7 @@
   { "security-info",     NULL },
   { "session-accept",    NULL },
   { "session-info",      NULL },
-  { "session-initiate",  NULL },
+  { "session-initiate",  handle_session_initiate },
   { "session-terminate", NULL },
   { "transport-accept",  NULL },
   { "transport-info",    NULL },
@@ -72,7 +75,7 @@
 module_info_t info_jingle = {
   .branch          = MCABBER_BRANCH,
   .api             = MCABBER_API_VERSION,
-  .version         = MCABBER_VERSION,
+  .version         = PROJECT_VERSION,
   .description     = "Main Jingle module,"
                      " required for file transport, voip...\n",
   .requires        = NULL,
@@ -92,7 +95,7 @@
     return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
 
   JingleNode *jn = g_new0(JingleNode, 1);
-  GError *error;
+  GError *error = NULL;
   LmMessageNode *root = lm_message_get_node(message)->children;
   LmMessageNode *node = lm_message_node_get_child(root, "jingle");
 
@@ -106,20 +109,23 @@
 
   check_jingle(node, jn, &error);
   if (error != NULL) {
-    if (error->code == JINGLE_CHECK_ERROR) {
+    if (error->domain == JINGLE_CHECK_ERROR) {
       // request malformed, we reply with a bad-request
       jingle_send_iq_error(message, "cancel", "bad-request", NULL);
     }
+    g_clear_error(&error);
     return LM_HANDLER_RESULT_REMOVE_MESSAGE;
   }
-  
+
   scr_log_print(LPRINT_DEBUG, "jingle: Received a valid jingle IQ");
-  
-  if (jingle_action_list[jn->action].handler != NULL)
-    jingle_action_list[jn->action].handler(message, jn, &error);
-  else
+
+  if (jingle_action_list[jn->action].handler == NULL) {
     jingle_send_iq_error(message, "cancel", "feature-not-implemented",
                          "unsupported-info");
+    return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+  }
+
+  jingle_action_list[jn->action].handler(message, jn);
 
   return LM_HANDLER_RESULT_REMOVE_MESSAGE;
 }
--- a/jingle/jingle.h	Sun Jun 06 23:19:47 2010 +0200
+++ b/jingle/jingle.h	Mon Jun 07 19:15:28 2010 +0200
@@ -96,7 +96,7 @@
 
 struct JingleActionList {
   const gchar  *name;
-  void (*handler)(LmMessage *, JingleNode *, GError **);
+  void (*handler)(LmMessage *, JingleNode *);
 };