Include config.h. The file transfert module now add the corresponding
feature.
--- 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 *);
};