From da94dcf3cfa65ca888b323ba08d76bf068e03937 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 27 Jan 2014 21:42:34 +0000 Subject: [PATCH] Moved connection_error_handler to _presence_error_handler --- src/xmpp/connection.c | 43 -------------------------------------- src/xmpp/connection.h | 2 -- src/xmpp/presence.c | 48 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 46 deletions(-) diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 4833d56c..36b63e8b 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -322,49 +322,6 @@ _connection_free_session_data(void) presence_clear_sub_requests(); } -int -connection_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, - void * const userdata) -{ - xmpp_ctx_t *ctx = connection_get_ctx(); - gchar *err_msg = NULL; - gchar *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM); - xmpp_stanza_t *error_stanza = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_ERROR); - xmpp_stanza_t *text_stanza = xmpp_stanza_get_child_by_name(error_stanza, STANZA_NAME_TEXT); - - if (error_stanza == NULL) { - log_debug("error message without received"); - } else { - - // check for text - if (text_stanza != NULL) { - err_msg = xmpp_stanza_get_text(text_stanza); - if (err_msg != NULL) { - handle_error_message(from, err_msg); - xmpp_free(ctx, err_msg); - } - - // TODO : process 'type' attribute from [RFC6120, 8.3.2] - - // otherwise show defined-condition - } else { - xmpp_stanza_t *err_cond = xmpp_stanza_get_children(error_stanza); - - if (err_cond == NULL) { - log_debug("error message without or received"); - - } else { - err_msg = xmpp_stanza_get_name(err_cond); - handle_error_message(from, err_msg); - - // TODO : process 'type' attribute from [RFC6120, 8.3.2] - } - } - } - - return 1; -} - static jabber_conn_status_t _jabber_connect(const char * const fulljid, const char * const passwd, const char * const altdomain, int port) diff --git a/src/xmpp/connection.h b/src/xmpp/connection.h index f11bc8c8..bf7d145e 100644 --- a/src/xmpp/connection.h +++ b/src/xmpp/connection.h @@ -29,8 +29,6 @@ xmpp_conn_t *connection_get_conn(void); xmpp_ctx_t *connection_get_ctx(void); -int connection_error_handler(xmpp_conn_t * const conn, - xmpp_stanza_t * const stanza, void * const userdata); void connection_set_priority(int priority); void connection_set_presence_message(const char * const message); void connection_add_available_resource(Resource *resource); diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index 9b11c898..f61d605d 100644 --- a/src/xmpp/presence.c +++ b/src/xmpp/presence.c @@ -55,6 +55,8 @@ static int _available_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata); static int _muc_user_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata); +static int _presence_error_handler(xmpp_conn_t * const conn, + xmpp_stanza_t * const stanza, void * const userdata); static char* _get_caps_key(xmpp_stanza_t * const stanza); static void _send_room_presence(xmpp_conn_t *conn, xmpp_stanza_t *presence); @@ -72,7 +74,7 @@ presence_add_handlers(void) xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); - HANDLE(NULL, STANZA_TYPE_ERROR, connection_error_handler); + HANDLE(NULL, STANZA_TYPE_ERROR, _presence_error_handler); HANDLE(STANZA_NS_MUC_USER, NULL, _muc_user_handler); HANDLE(NULL, STANZA_TYPE_UNAVAILABLE, _unavailable_handler); HANDLE(NULL, STANZA_TYPE_SUBSCRIBE, _subscribe_handler); @@ -329,6 +331,50 @@ _presence_leave_chat_room(const char * const room_jid) } } +static int +_presence_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, + void * const userdata) +{ + xmpp_ctx_t *ctx = connection_get_ctx(); + gchar *err_msg = NULL; + gchar *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM); + xmpp_stanza_t *error_stanza = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_ERROR); + xmpp_stanza_t *text_stanza = xmpp_stanza_get_child_by_name(error_stanza, STANZA_NAME_TEXT); + + if (error_stanza == NULL) { + log_debug("error message without received"); + } else { + + // check for text + if (text_stanza != NULL) { + err_msg = xmpp_stanza_get_text(text_stanza); + if (err_msg != NULL) { + handle_error_message(from, err_msg); + xmpp_free(ctx, err_msg); + } + + // TODO : process 'type' attribute from [RFC6120, 8.3.2] + + // otherwise show defined-condition + } else { + xmpp_stanza_t *err_cond = xmpp_stanza_get_children(error_stanza); + + if (err_cond == NULL) { + log_debug("error message without or received"); + + } else { + err_msg = xmpp_stanza_get_name(err_cond); + handle_error_message(from, err_msg); + + // TODO : process 'type' attribute from [RFC6120, 8.3.2] + } + } + } + + return 1; +} + + static int _unsubscribed_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)