about summary refs log tree commit diff stats
path: root/src/otr/otr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/otr/otr.c')
-rw-r--r--src/otr/otr.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/otr/otr.c b/src/otr/otr.c
index 7507cd56..46ad491c 100644
--- a/src/otr/otr.c
+++ b/src/otr/otr.c
@@ -313,7 +313,7 @@ otr_on_message_recv(const char * const barejid, const char * const resource, con
     otr_free_message(decrypted);
 }
 
-void
+prof_otrsendres_t
 otr_on_message_send(const char * const barejid, const char * const message)
 {
     char *id = NULL;
@@ -328,11 +328,11 @@ otr_on_message_send(const char * const barejid, const char * const message)
             ui_outgoing_chat_msg(barejid, message, id);
             otr_free_message(encrypted);
         } else {
-            cons_show_error("Failed to encrypt and send message.");
+            return PROF_OTRENCFAIL;
         }
 
     } else if (policy == PROF_OTRPOLICY_ALWAYS) {
-        cons_show_error("Failed to send message. OTR policy set to: always");
+        return PROF_OTRPOLICYFAIL;
 
     } else if (policy == PROF_OTRPOLICY_OPPORTUNISTIC) {
         char *otr_tagged_msg = otr_tag_message(message);
@@ -348,6 +348,8 @@ otr_on_message_send(const char * const barejid, const char * const message)
     }
 
     free(id);
+
+    return PROF_OTRSUCCESS;
 }
 
 void
@@ -741,6 +743,16 @@ otr_decrypt_message(const char * const from, const char * const message, gboolea
     }
 }
 
+char*
+otr_senderror_str(prof_otrsendres_t res)
+{
+    switch (res) {
+    case PROF_OTRENCFAIL:    return "Failed to encrypt and send message.";
+    case PROF_OTRPOLICYFAIL: return "Failed to send message. OTR policy set to: always";
+    default:                 return "Unknown OTR error.";
+    }
+}
+
 void
 otr_free_message(char *message)
 {