---
 src/message.c | 71 +++++++++++++++--------------------------------------------
 1 file changed, 18 insertions(+), 53 deletions(-)

diff --git a/src/message.c b/src/message.c
index c3a9389..600800b 100644
--- a/src/message.c
+++ b/src/message.c
@@ -1310,8 +1310,6 @@ int otrl_message_receiving(OtrlUserState us, const 
OtrlMessageAppOps *ops,
                gcry_error_t err;
                OtrlTLV *tlvs, *tlv;
                char *plaintext;
-               char *buf;
-               const char *err_msg;
                unsigned char *extrakey;
                unsigned char flags;
                NextExpectedSMP nextMsg;
@@ -1335,57 +1333,24 @@ int otrl_message_receiving(OtrlUserState us, const 
OtrlMessageAppOps *ops,
                    break;
 
                case OTRL_MSGSTATE_ENCRYPTED:
-                   extrakey = gcry_malloc_secure(OTRL_EXTRAKEY_BYTES);
-                   err = otrl_proto_accept_data(&plaintext, &tlvs, context,
-                                   message, &flags, extrakey);
-                   if (err) {
-                       int is_conflict =
-                               (gpg_err_code(err) == GPG_ERR_CONFLICT);
-                       if ((flags & OTRL_MSGFLAGS_IGNORE_UNREADABLE)) {
-                           edata.ignore_message = 1;
-                           break;
-                       }
-                       if (is_conflict) {
-                           if (ops->handle_msg_event) {
-                               ops->handle_msg_event(opdata,
-                                       OTRL_MSGEVENT_RCVDMSG_UNREADABLE,
-                                       context, NULL,
-                                       gcry_error(GPG_ERR_NO_ERROR));
-                           }
-                       } else {
-                           if (ops->handle_msg_event) {
-                               ops->handle_msg_event(opdata,
-                                       OTRL_MSGEVENT_RCVDMSG_MALFORMED,
-                                       context, NULL,
-                                       gcry_error(GPG_ERR_NO_ERROR));
-                           }
-                       }
-                       if (ops->inject_message && ops->otr_error_message) {
-                           err_msg = ops->otr_error_message(opdata,
-                                       context,
-                                       is_conflict ?
-                                           OTRL_ERRCODE_MSG_UNREADABLE :
-                                           OTRL_ERRCODE_MSG_MALFORMED);
-                           if (err_msg) {
-                               buf = malloc(strlen(OTR_ERROR_PREFIX) +
-                                               strlen(err_msg) + 1);
-                               if (buf) {
-                                   strcpy(buf, OTR_ERROR_PREFIX);
-                                   strcat(buf, err_msg);
-                                   ops->inject_message(opdata,
-                                           accountname, protocol,
-                                           sender, buf);
-                                   free(buf);
-                               }
-                           }
-                           if (ops->otr_error_message_free) {
-                               ops->otr_error_message_free(opdata,
-                                       err_msg);
-                           }
-                       }
-                       edata.ignore_message = 1;
-                       break;
-                   }
+                    extrakey = gcry_malloc_secure(OTRL_EXTRAKEY_BYTES);
+                    err = otrl_proto_accept_data(&plaintext, &tlvs, context,
+                                                 message, &flags, extrakey);
+                    if (err) {
+                        gcry_free(extrakey);
+                        edata.ignore_message = 1;
+                        if (flags & OTRL_MSGFLAGS_IGNORE_UNREADABLE) {
+                            break;
+                        }
+                        if (gpg_err_code(err) == GPG_ERR_CONFLICT) {
+                            report_error(ops, opdata, 
OTRL_MSGEVENT_RCVDMSG_UNREADABLE,
+                                        OTRL_ERRCODE_MSG_UNREADABLE, context);
+                        } else {
+                            report_error(ops, opdata, 
OTRL_MSGEVENT_RCVDMSG_MALFORMED,
+                                         OTRL_ERRCODE_MSG_MALFORMED, context);
+                        }
+                        break;
+                    }
 
                    /* If the other side told us he's disconnected his
                     * private connection, make a note of that so we
-- 
2.1.2

_______________________________________________
OTR-dev mailing list
OTR-dev@lists.cypherpunks.ca
http://lists.cypherpunks.ca/mailman/listinfo/otr-dev

Reply via email to