From 1a300ce7d35092b93814eac00008aae3d98819a1 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 26 Jan 2014 22:50:22 +0000 Subject: [PATCH] Show original error message --- src/server_events.c | 9 ++++----- src/server_events.h | 2 +- src/ui/core.c | 13 +++++-------- src/ui/ui.h | 2 +- src/xmpp/message.c | 30 +++++++++++++++++++++--------- 5 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/server_events.c b/src/server_events.c index 8400de8d..938572a0 100644 --- a/src/server_events.c +++ b/src/server_events.c @@ -53,12 +53,11 @@ handle_error_message(const char *from, const char *err_msg) } void -handle_recipient_not_found(const char *from) +handle_recipient_not_found(const char * const recipient, const char * const err_msg) { - log_info("Removing chat session for %s", from); - ui_handle_recipient_not_found(from); - if (prefs_get_boolean(PREF_STATES) && chat_session_exists(from)) { - chat_session_set_recipient_supports(from, FALSE); + ui_handle_recipient_not_found(recipient, err_msg); + if (prefs_get_boolean(PREF_STATES) && chat_session_exists(recipient)) { + chat_session_set_recipient_supports(recipient, FALSE); } } diff --git a/src/server_events.h b/src/server_events.h index 34f99c79..794d96dc 100644 --- a/src/server_events.h +++ b/src/server_events.h @@ -75,6 +75,6 @@ void handle_group_remove(const char * const contact, void handle_roster_remove(const char * const barejid); void handle_roster_add(const char * const barejid, const char * const name); void handle_autoping_cancel(void); -void handle_recipient_not_found(const char *from); +void handle_recipient_not_found(const char * const recipient, const char * const err_msg); #endif diff --git a/src/ui/core.c b/src/ui/core.c index dd27aa1a..a59225c8 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -355,14 +355,14 @@ _ui_handle_error_message(const char * const from, const char * const err_msg) } static void -_ui_handle_recipient_not_found(const char * const from) +_ui_handle_recipient_not_found(const char * const recipient, const char * const err_msg) { - ProfWin *win = wins_get_by_recipient(from); + ProfWin *win = wins_get_by_recipient(recipient); GString *msg = g_string_new(""); // no window for intended recipient, show message in current and console if (win == NULL) { - g_string_printf(msg, "Recipient %s not found at server.", from); + g_string_printf(msg, "Recipient %s not found: %s", recipient, err_msg); cons_show_error(msg->str); win = wins_get_current(); if (win->type != WIN_CONSOLE) { @@ -371,16 +371,13 @@ _ui_handle_recipient_not_found(const char * const from) // intended recipient was invalid chat room } else if (win->type == WIN_MUC) { - g_string_printf(msg, "You have not joined %s.", from); + g_string_printf(msg, "Room %s not found: %s", recipient, err_msg); cons_show_error(msg->str); win_print_line(win, '!', COLOUR_ERROR, msg->str); // unknown chat recipient } else { - if (prefs_get_boolean(PREF_STATES) && chat_session_exists(from)) { - chat_session_set_recipient_supports(from, FALSE); - } - g_string_printf(msg, "Recipient %s not found at server.", from); + g_string_printf(msg, "Recipient %s not found: %s", recipient, err_msg); cons_show_error(msg->str); win_print_line(win, '!', COLOUR_ERROR, msg->str); } diff --git a/src/ui/ui.h b/src/ui/ui.h index 11ffa765..837a8a3a 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -130,7 +130,7 @@ void (*ui_group_added)(const char * const contact, const char * const group); void (*ui_group_removed)(const char * const contact, const char * const group); void (*ui_chat_win_contact_online)(PContact contact, Resource *resource, GDateTime *last_activity); void (*ui_chat_win_contact_offline)(PContact contact, char *resource, char *status); -void (*ui_handle_recipient_not_found)(const char * const from); +void (*ui_handle_recipient_not_found)(const char * const recipient, const char * const err_msg); // contact status functions void (*ui_status_room)(const char * const contact); diff --git a/src/xmpp/message.c b/src/xmpp/message.c index d814d59d..236999b9 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -194,15 +194,28 @@ _message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata) { // log message, function never returns NULL - char *err_msg = stanza_get_error_message(stanza); char *id = xmpp_stanza_get_id(stanza); - if (id != NULL) { - log_info("Error recieved (id=%s): %s", id, err_msg); - } else { - log_info("Error received: %s", err_msg); - } - char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM); + char *err_msg = stanza_get_error_message(stanza); + + GString *log_msg = g_string_new("Error receievd"); + if (id != NULL) { + g_string_append(log_msg, " (id:"); + g_string_append(log_msg, id); + g_string_append(log_msg, ")"); + } + if (from != NULL) { + g_string_append(log_msg, " (from:"); + g_string_append(log_msg, from); + g_string_append(log_msg, ")"); + } + g_string_append(log_msg, ", error: "); + g_string_append(log_msg, err_msg); + + log_info(log_msg->str); + + g_string_free(log_msg, TRUE); + xmpp_stanza_t *error_stanza = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_ERROR); char *type = NULL; if (error_stanza != NULL) { @@ -212,8 +225,7 @@ _message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, // handle recipient not found if ((from != NULL) && ((type != NULL && (strcmp(type, "cancel") == 0)))) { char *cpy = strdup(from); - log_info("Recipient %s not found.", cpy); - handle_recipient_not_found(cpy); + handle_recipient_not_found(cpy, err_msg); } return 1;