about summary refs log tree commit diff stats
path: root/src/xmpp/message.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-03-22 00:20:29 +0000
committerJames Booth <boothj5@gmail.com>2016-03-22 00:20:29 +0000
commit6f537c38186b3cdc4c63e11a327f367723ecffbd (patch)
tree45cfe2af588e8922a524425168c0d58d80716750 /src/xmpp/message.c
parent9d782fa665689851f9510e086ac12a9c44b6b74e (diff)
downloadprofani-tty-6f537c38186b3cdc4c63e11a327f367723ecffbd.tar.gz
Add PGP decryption for incoming/outgoing carbons
Diffstat (limited to 'src/xmpp/message.c')
-rw-r--r--src/xmpp/message.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index ccd4d624..6e3e7721 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -191,8 +191,6 @@ message_send_chat_pgp(const char *const barejid, const char *const msg)
         stanza_attach_state(ctx, message, state);
     }
 
-    stanza_attach_carbons_private(ctx, message);
-
     if (prefs_get_boolean(PREF_RECEIPTS_REQUEST)) {
         stanza_attach_receipt_request(ctx, message);
     }
@@ -714,17 +712,25 @@ _handle_carbons(xmpp_stanza_t *const stanza)
         // check for and deal with message
         xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(message, STANZA_NAME_BODY);
         if (body) {
-            char *message = xmpp_stanza_get_text(body);
-            if (message) {
+            char *message_txt = xmpp_stanza_get_text(body);
+            if (message_txt) {
+                // check for pgp encrypted message
+                char *enc_message = NULL;
+                xmpp_stanza_t *x = xmpp_stanza_get_child_by_ns(message, STANZA_NS_ENCRYPTED);
+                if (x) {
+                    enc_message = xmpp_stanza_get_text(x);
+                }
+
                 // if we are the recipient, treat as standard incoming message
                 if(g_strcmp0(my_jid->barejid, jid_to->barejid) == 0){
-                    sv_ev_incoming_carbon(jid_from->barejid, jid_from->resourcepart, message);
-                }
+                    sv_ev_incoming_carbon(jid_from->barejid, jid_from->resourcepart, message_txt, enc_message);
+
                 // else treat as a sent message
-                else{
-                    sv_ev_outgoing_carbon(jid_to->barejid, message);
+                } else {
+                    sv_ev_outgoing_carbon(jid_to->barejid, message_txt, enc_message);
                 }
-                xmpp_free(ctx, message);
+                xmpp_free(ctx, message_txt);
+                xmpp_free(ctx, enc_message);
             }
         }