about summary refs log tree commit diff stats
path: root/src/server_events.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server_events.c')
-rw-r--r--src/server_events.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/server_events.c b/src/server_events.c
index e9dd7997..1e99383c 100644
--- a/src/server_events.c
+++ b/src/server_events.c
@@ -37,6 +37,7 @@
 #include "otr.h"
 #endif
 
+// TODO - replace with stanza error handlers
 void
 handle_error_message(const char *from, const char *err_msg)
 {
@@ -52,25 +53,26 @@ handle_error_message(const char *from, const char *err_msg)
     }
 }
 
+// handle message stanza errors
 void
-handle_recipient_not_found(const char * const recipient, const char * const err_msg)
+handle_message_error(const char * const from, const char * const type,
+    const char * const err_msg)
 {
-    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);
-    }
-}
+    // handle recipient not found ('from' contains a value and type is 'cancel')
+    if ((from != NULL) && ((type != NULL && (strcmp(type, "cancel") == 0)))) {
+        ui_handle_recipient_not_found(from, err_msg);
+        if (prefs_get_boolean(PREF_STATES) && chat_session_exists(from)) {
+            chat_session_set_recipient_supports(from, FALSE);
+        }
 
-void
-handle_recipient_error(const char * const recipient, const char * const err_msg)
-{
-    ui_handle_recipient_error(recipient, err_msg);
-}
+    // handle any other error from recipient
+    } else if (from != NULL) {
+        ui_handle_recipient_error(from, err_msg);
 
-void
-handle_error(const char * const err_msg)
-{
-    ui_handle_error(err_msg);
+    // handle errors from no recipient
+    } else {
+        ui_handle_error(err_msg);
+    }
 }
 
 void