# HG changeset patch # User Nicolas Cornu # Date 1275930928 -7200 # Node ID 61ffa66f82880b259fe06ff3d84bcbce546a68b8 # Parent 77966ed56e148ceeba77ad9690121b7ee9772ff4 Include config.h. The file transfert module now add the corresponding feature. diff -r 77966ed56e14 -r 61ffa66f8288 jingle-filetransfert/CMakeLists.txt --- 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) diff -r 77966ed56e14 -r 61ffa66f8288 jingle-filetransfert/filetransfert.c --- 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 #include +#include #include +#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); } diff -r 77966ed56e14 -r 61ffa66f8288 jingle-filetransfert/filetransfert.h --- /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 diff -r 77966ed56e14 -r 61ffa66f8288 jingle/CMakeLists.txt --- 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) diff -r 77966ed56e14 -r 61ffa66f8288 jingle/action-handlers.c --- 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 element + if (g_list_length(jn->content) < 1) { + jingle_send_iq_error(message, "cancel", "bad-request", NULL); + } } diff -r 77966ed56e14 -r 61ffa66f8288 jingle/action-handlers.h --- 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 -void handle_session_initiate(LmMessage *m, LmMessageNode *j); +void handle_session_initiate(LmMessage *m, JingleNode *jn); #endif diff -r 77966ed56e14 -r 61ffa66f8288 jingle/jingle.c --- 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 #include @@ -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; } diff -r 77966ed56e14 -r 61ffa66f8288 jingle/jingle.h --- 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 *); };