diff --git a/src/command/commands.c b/src/command/commands.c
index d0409890..d0ae7f37 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -170,7 +170,7 @@ cmd_connect(gchar **args, struct cmd_help_t help)
if (conn_status == JABBER_DISCONNECTED) {
cons_show_error("Connection attempt for %s failed.", jid);
- log_debug("Connection attempt for %s failed", jid);
+ log_info("Connection attempt for %s failed", jid);
}
free(jid);
diff --git a/src/log.c b/src/log.c
index b82905cf..c92b164c 100644
--- a/src/log.c
+++ b/src/log.c
@@ -62,6 +62,7 @@ static char * _get_groupchat_log_filename(const char * const room,
static gchar * _get_chatlog_dir(void);
static gchar * _get_log_file(void);
static void _rotate_log_file(void);
+static char* _log_string_from_level(log_level_t level);
void
log_debug(const char * const msg, ...)
@@ -143,8 +144,11 @@ log_msg(log_level_t level, const char * const area, const char * const msg)
long result;
dt = g_date_time_new_now(tz);
+ char *level_str = _log_string_from_level(level);
+
gchar *date_fmt = g_date_time_format(dt, "%d/%m/%Y %H:%M:%S");
- fprintf(logp, "%s: %s: %s\n", date_fmt, area, msg);
+
+ fprintf(logp, "%s: %s: %s: %s\n", date_fmt, area, level_str, msg);
g_date_time_unref(dt);
fflush(logp);
@@ -523,3 +527,21 @@ _get_log_file(void)
return result;
}
+
+static char*
+_log_string_from_level(log_level_t level)
+{
+ switch (level)
+ {
+ case PROF_LEVEL_ERROR:
+ return "ERR";
+ case PROF_LEVEL_WARN:
+ return "WRN";
+ case PROF_LEVEL_INFO:
+ return "INF";
+ case PROF_LEVEL_DEBUG:
+ return "DBG";
+ default:
+ return "LOG";
+ }
+}
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index 6f340b2d..5ea54f2d 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -195,34 +195,35 @@ _message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
{
char *id = xmpp_stanza_get_id(stanza);
char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
-
- // stanza_get_error never returns NULL
- 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) {
type = xmpp_stanza_get_attribute(error_stanza, STANZA_ATTR_TYPE);
}
+ // stanza_get_error never returns NULL
+ char *err_msg = stanza_get_error_message(stanza);
+
+ GString *log_msg = g_string_new("message stanza error received");
+ if (id != NULL) {
+ g_string_append(log_msg, " id=");
+ g_string_append(log_msg, id);
+ }
+ if (from != NULL) {
+ g_string_append(log_msg, " from=");
+ g_string_append(log_msg, from);
+ }
+ if (type != NULL) {
+ g_string_append(log_msg, " type=");
+ g_string_append(log_msg, type);
+ }
+ g_string_append(log_msg, " error=");
+ g_string_append(log_msg, err_msg);
+
+ log_info(log_msg->str);
+
+ g_string_free(log_msg, TRUE);
+
// handle recipient not found ('from' contains a value and type is 'cancel')
if ((from != NULL) && ((type != NULL && (strcmp(type, "cancel") == 0)))) {
handle_recipient_not_found(from, err_msg);
@@ -236,6 +237,8 @@ _message_error_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
handle_error(err_msg);
}
+ free(err_msg);
+
return 1;
}
diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c
index f61d605d..538898f8 100644
--- a/src/xmpp/presence.c
+++ b/src/xmpp/presence.c
@@ -335,42 +335,41 @@ 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);
+ char *id = xmpp_stanza_get_id(stanza);
+ char *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]
- }
- }
+ char *type = NULL;
+ if (error_stanza != NULL) {
+ type = xmpp_stanza_get_attribute(error_stanza, STANZA_ATTR_TYPE);
}
+ // stanza_get_error never returns NULL
+ char *err_msg = stanza_get_error_message(stanza);
+
+ GString *log_msg = g_string_new("presence stanza error received");
+ if (id != NULL) {
+ g_string_append(log_msg, " id=");
+ g_string_append(log_msg, id);
+ }
+ if (from != NULL) {
+ g_string_append(log_msg, " from=");
+ g_string_append(log_msg, from);
+ }
+ if (type != NULL) {
+ g_string_append(log_msg, " type=");
+ g_string_append(log_msg, type);
+ }
+ g_string_append(log_msg, " error=");
+ g_string_append(log_msg, err_msg);
+
+ log_info(log_msg->str);
+
+ g_string_free(log_msg, TRUE);
+
+ handle_error_message(from, err_msg);
+
+ free(err_msg);
+
return 1;
}